我正在努力使我的 Go 应用程序更加面向对象。现在我有以下电话:
groups.AllGroups = GrowGroupsArray(groups.AllGroups)
其中调用:
func GrowGroupsArray(g []Group) []Group {
newSlice := make([]Group, len(g), 2*cap(g)+1)
copy(newSlice, g)
g = newSlice
return g
}
这在技术上有效,但我宁愿这样:
//groups is of type Groups
//AllGroups is of type []Group
groups.AllGroups.GrowGroupsArray()
func (g Groups) GrowGroupsArray() {
newSlice := make([]Group, len(g), 2*cap(g)+1)
copy(newSlice, g)
g.AllGroups = newSlice
}
这编译得很好,但我得到了运行时恐慌,因为当函数完成时(超出范围)没有任何东西被保存到对象中。我在第一个示例工作但第二个不会将新数组保存到我的对象的几个地方遇到了完全相同的问题。调用函数后,旧数组仍然存在。任何帮助将不胜感激。
慕田峪9158850
相关分类