go-receiver类型辨析
等价转换公式
定义结构体如下
type T struct{
a int
}
receiver为结构体本身的方法及其等价转换后的方法为
func(t T)Get()int{
return t.a
}
// 等价于
func Get(t T)int{
return t.a
}
类似的,receiver为结构体指针的方法及其等价转换后的方法为
func(t *T)Set(a int)int{
t.a = a
return t.a
}
// 等价于
func Set(t *T, a int)int{
t.a = a
return t.a
}
等价转后的函数,就是方法的原型
区别
- 从转换后的方法原型,很容易看出,区别就在于方法内的结构体对象是副本还是通过指针拿到的原对象
参考
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。