Go 未保存结构变量

Go 未保存结构变量,go,Go,我不确定为什么我的arraylist不能按预期工作 这是我的数组列表 func main() { a := NewArrayList() fmt.Println(a.AddAtIndex(0, "Brian")) fmt.Println("Outisde ArrayList: Size is ", a.GetSize()) } 我希望在索引0处添加Brian后,大小将从0更新为1。 然而,输出显示 Inside ArrayList

我不确定为什么我的arraylist不能按预期工作

这是我的数组列表

func main() {
    a := NewArrayList()
    fmt.Println(a.AddAtIndex(0, "Brian"))
    fmt.Println("Outisde ArrayList: Size is ", a.GetSize())
}
我希望在索引0处添加Brian后,大小将从0更新为1。 然而,输出显示

Inside ArrayList: Size is  1
true <nil>
Outisde ArrayList: Size is  0
为什么没有更新我的大小?

似乎是通过值传递ArrayList实例,这就是为什么它在AddAtIndex方法内部更新,而不是在外部更新。 尝试将AddAtIndex方法签名更新为以下内容,以便它接受对ArrayList实例的引用,注意使用*符号:

func (a *ArrayList) AddAtIndex(index int, data string) (bool, error) {...}

因为您通过值而不是引用传递ArrayList。您需要func a*ArrayListadDataIndex。。。{ ...}. 我确信这一定是一个重复的问题。另外,我注意到您测试&data==nil。这永远不会是真的。使用一个,看看这个例子哇,非常感谢你的答案!StackOverflow上的人非常乐于助人。我将进一步研究指针:
func (a *ArrayList) AddAtIndex(index int, data string) (bool, error) {...}