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

T和* T的方法集

T和* T的方法集

Go
翻翻过去那场雪 2021-04-27 13:57:03
该Golang语言规范状态:任何其他类型T的方法集都包含具有接收器类型的所有方法T。对应指针类型的方法集*T是具有接收器*T或的所有方法的集T(即,它也包含的方法集T)。为什么是这样?为什么接收T到的方法属于为其设置的方法,*T反之亦然?
查看完整描述

1 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

常见问题解答

如果接口值包含指针* T,则方法调用可以通过取消对指针的引用来获取值,但是如果接口值包含值T,则方法调用无法获得有用的方法来获取指针。

顺便说一句,具有指针接收器的方法可以更改其接收器,就像它可以更改指针参数一样。通过将非指针接收器作为指针传递(假设是可能的),允许方法更改它,但不应更改。

建议对一种类型的所有方法使用一种一致的接收器类型,并避免混合使用指针和直接接收器。对于大型类型,还建议使用指针接收器。


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

添加回答

举报

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