
go 是我的第一种编程语言,我正在尝试通过编写一个根据分类法组织信息的程序来学习指针。我在理解如何附加到指针切片时遇到一些困难。
type list struct {
taxonomies []taxonomy
}
func (l *list) add(t taxonomy) {
var exists bool
var existing *taxonomy
for _, taxonomy := range l.taxonomies {
if taxonomy.name == t.name {
exists = true
existing = &taxonomy
}
}
if exists {
for _, term := range t.data {
termexists := false
for _, existingterm := range existing.data {
if existingterm.name == term.name {
termexists = true
break
}
}
if termexists {
continue
}
(*existing).data = append((*existing).data, term)
}
} else {
l.taxonomies = append(l.taxonomies, t)
}
}
type taxonomy struct {
name string
data []term
}
type term struct {
name, link string
}我认为问题出在底部,这一行:
(*existing).Data = append((*existing).Data, term)
通过跟踪调试器中的代码,我可以看到当追加发生时,存储在“现有”变量中的分类法正在更新,但实际列表中的数据并未更新。
谁能告诉我哪里出错了?
云升CRM客户管理系统主要是为了帮助企业解决在日常工作中遇到的客户管理等难题而开发,通过本系统可以对企业事务中的不同功能进行操作,用户通过自定义字段类型可以达到适合不同企业的需求。在《云升CRM客户管理系统》中管理着一个企业最为完整的客户信息,全面的客户信息覆盖在企业的市场营销、销售和服务与技术支持等企业整个前端办公领域的各个环节里。它为企业带来附加价值是不可限量的。本产品是一款针对中小企业销售管
1172
l.taxonomies 是 []taxonomy,因此 taxonomy 值将是该元素的副本,对该副本的更改不会反映在原始 list 值中。
您可以使用索引进行迭代以避免复制值
for i := range l.taxonomies {
if l.taxonomies[i].name == t.name {
exists = true
existing = &l.taxonomies[i]
}
}但是,仍然可以复制传递给 append 等方法的数据。相反,最好在整个过程中使用指针:
type List struct {
Taxonomies []*Taxonomy
}
func (l *List) Add(t *Taxonomy) {
...以上就是附加到指针切片的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号