我正在努力使我的 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 []Groupgroups.AllGroups.GrowGroupsArray()func (g Groups) GrowGroupsArray() { newSlice := make([]Group, len(g), 2*cap(g)+1) copy(newSlice, g) g.AllGroups = newSlice}这编译得很好,但我得到了运行时恐慌,因为当函数完成时(超出范围)没有任何东西被保存到对象中。我在第一个示例工作但第二个不会将新数组保存到我的对象的几个地方遇到了完全相同的问题。调用函数后,旧数组仍然存在。任何帮助将不胜感激。
1 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
我只需要这样做:
//groups is of type Groups
//AllGroups is of type []Group
groups.AllGroups.GrowGroupsArray()
func (g *Groups) GrowGroupsArray() { //<- Make this a pointer method
newSlice := make([]Group, len(g), 2*cap(g)+1)
copy(newSlice, g)
g.AllGroups = newSlice
}
- 1 回答
- 0 关注
- 188 浏览
添加回答
举报
0/150
提交
取消