T和* T的方法集

Golang语言规范状态

任何其他类型T的方法集都包含具有接收器类型的所有方法T。对应指针类型的方法集*T是具有接收器*T或的所有方法的集T(即,它也包含的方法集T)。

为什么是这样?为什么接收T到的方法属于为其设置的方法,*T反之亦然?


翻翻过去那场雪
浏览 245回答 1
1回答

富国沪深

从常见问题解答:如果接口值包含指针* T,则方法调用可以通过取消对指针的引用来获取值,但是如果接口值包含值T,则方法调用无法获得有用的方法来获取指针。顺便说一句,具有指针接收器的方法可以更改其接收器,就像它可以更改指针参数一样。通过将非指针接收器作为指针传递(假设是可能的),允许方法更改它,但不应更改。建议对一种类型的所有方法使用一种一致的接收器类型,并避免混合使用指针和直接接收器。对于大型类型,还建议使用指针接收器。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go