假设定义一个结构体
type A struct{
}
定义一个方法:
func (self *A) SayHi() {
fmt.println("你好")
}
我想问方法第一个括号里加 *
与不加 *
有什么区别。测试好像没什么区别。请高手指点下。
我是在网上看到下面这句话才想问的,我不太懂。
对于接口的执行机制:
1.T仅拥有属于T类型的方法集,而*T则同时拥有(T+*T)方法集
2.基于T实现方法,表示同时实现了interface和interface(*T)接口
3.基于*T实现方法,那就只能是对interface(*T)实现接口
有疑问加站长微信联系(非本文作者)

说起来话长,我只能说,你这里没区别。先看看基础知识吧!
简单的说, 如果这个方法要改变self ,请用指针,如果不改变的话, 两者都可以
我是在网上看到下面这句话才想问的,例子我也举不出。您看看
对于接口的执行机制: 1.T仅拥有属于T类型的方法集,而T则同时拥有(T+T)方法集 2.基于T实现方法,表示同时实现了interface和interface(T)接口 3.基于T实现方法,那就只能是对interface(*T)实现接口
抱歉,看我修改的帖子,回复中的星号不显示
a1 := &A{} a1可以调用 SayHi a2 := A{} a2不可以调用SayHi 所以尽量用指针 你的1 是对的, 2 和3 是错的, T只含有T的, T 包含了T和T的
没毛病; 在适当的情况下用*能节约一些栈空间,效率更高