有公司类型,这是一个结构,其中包含一个人的地图,这也是所有结构。
type Company struct {
employees map[int]Person
}
type Person struct {
[...]
}
在将一些Person分配给employees-map之后,我试图在每个这些上调用一个指针方法。
func (company *Company) Populate(names []string) {
for i := 1; i <= 15; i++ {
company.employees[i] = Person{names[i - 1], [...]}
company.employees[i].Initialize()
}
}
不幸的是,这失败了,go-Compiler抱怨我无法在company.employees [i]上调用指针方法,并且我无法获得company.employees [i]的地址。但是,将Initialize-method设置为非指针方法,并让其返回person的副本,然后通过使用再次将其分配给map
company.employees[i] = company.employees[i].Initialize()
的作品,没有什么不同。
从来没有使用过指针,这让我很烦。地图不是一成不变的,它们都可以通过两种方式修改,因此在地图中的实体上调用指针方法应该不是问题-至少在我脑海中。
如果有人可以向我解释我在这里做错了什么-或纠正了我的想法-我会很高兴的。
aluckdog
相关分类