Go规范说:任何其他类型 T 的方法集由接收者类型为 T 的所有方法组成。 对应指针类型 *T 的方法集是所有接收者为 *T 或 T 的方法的集合(也就是说,它还包含吨)。我的理解是:T 有自己的方法集,而 *T 有自己的方法集加上 T 的方法集,因为它可以将接收者 *T 解引用到 T 并调用方法。因此,我们可以使用变量类型 T 的接收者 *T 调用一些方法。所以我决定验证我的逻辑:package mainimport ( "fmt" "reflect")type User struct{}func (self *User) SayWat() { fmt.Println(self) fmt.Println(reflect.TypeOf(self)) fmt.Println("WAT\n")}func main() { var user User = User{} fmt.Println(reflect.TypeOf(user), "\n") user.SayWat()}http://play.golang.org/p/xMKuLzUbIf我有点困惑。看起来我可以在 T 上调用“of *T”的方法?我有一个更广泛的例子http://play.golang.org/p/RROPMj534A,这也让我感到困惑。是否有一些反之亦然的类型推断?我是否遗漏了什么,或者我的逻辑不正确?
1 回答
- 1 回答
- 0 关注
- 180 浏览
添加回答
举报
0/150
提交
取消