为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
郎朗坤 2021-12-07 15:06:20
我正在努力使我的 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

}


查看完整回答
反对 回复 2021-12-07
  • 1 回答
  • 0 关注
  • 188 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信