Golang运算符重载

Golang运算符重载,第1张

Golang运算符重载

是的,使用指针接收器

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()
。在Go
Playground
上尝试一下。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5462881.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存