icz*_*cza 17

是的,使用指针接收器:

func (a *A) AddValue(v A) {
    a.value1 += v.value1
    a.value2 += v.value2
}
A
Add()
func (a *A) Add(v *A) {
    a.value1 += v.value1
    a.value2 += v.value2
}

所以使用它:

x, y := &A{1, 2}, &A{3, 4}

x.Add(y)

fmt.Println(x)  // Prints &{4 6}

笔记

Add()
a, b := A{1, 2}, A{3, 4}
a.Add(&b)
fmt.Println(a)
a.Add()(&a).Add()
  • @Sundar如果是小结构,那没关系,你不应该在乎.如果你的结构很大,那么是的,它可能有帮助.有关该主题的讨论,请参阅[指针与参数和返回值中的值](http://stackoverflow.com/questions/23542989/pointers-vs-values-in-parameters-and-return-values). (2认同)