1. 首页
  2. 主题
  3. Go问与答

关于调用别名中复写匿名成员方法的疑惑

jjjabc · · 1053 次点击
[https://play.golang.org/p/kTvcsWkJeaZ](https://play.golang.org/p/kTvcsWkJeaZ) ```` package main type T1 struct { } func (T1) Hello(T1) { } type T2 struct { T1 } func (T2) Hello(T2) { } type T3 T2 type T4 = T2 func main() { var v_T3 T3 v_T3.Hello(v_T3) var v_T4 T4 v_T4.Hello(v_T4) } ```` prog.go:21:12: cannot use v_T3 (type T3) as type T1 in argument to v_T3.T1.Hello go version go1.11.2 linux/amd64 程序如上.在21行,golang为何会去调用v_T3.T1.Hello而不是v_T3.Hello方法呢? v_T3.Hello(v_T3)会报错 v_T4.Hello(v_T4)就不会 请大佬解惑,跪谢~
你现在的T3就是和T2 一个level 的,为什么会拥有T2的东西?那肯定是拥有T1的东西啊
#3
更多评论
1、别名,可以拥有原有类型的所有元素和方法。 2、type A B,A 和B 是不同的type,是一个新的type,拥有B 的所有元素,但是不拥有B 的方法。
#1
以我的这个例子来说,T3不拥有T2的方法,那为啥拥有T1的方法?因为T1是T2的元素?因此T3拥有T1这个元素,因此就有了这个T1的方法?
#2

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中