猿问

如何在 GO 中进行嵌套的面向对象函数调用

我正在努力使我的 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

}

这编译得很好,但我得到了运行时恐慌,因为当函数完成时(超出范围)没有任何东西被保存到对象中。我在第一个示例工作但第二个不会将新数组保存到我的对象的几个地方遇到了完全相同的问题。调用函数后,旧数组仍然存在。任何帮助将不胜感激。


郎朗坤
浏览 189回答 1
1回答

慕田峪9158850

我只需要这样做://groups is of type Groups//AllGroups is of type []Groupgroups.AllGroups.GrowGroupsArray()func (g *Groups) GrowGroupsArray() { //<- Make this a pointer method&nbsp; &nbsp; newSlice := make([]Group, len(g), 2*cap(g)+1)&nbsp; &nbsp; copy(newSlice, g)&nbsp; &nbsp; g.AllGroups = newSlice}
随时随地看视频慕课网APP

相关分类

Go
我要回答