type MinerWallet struct{}
func (mw *MinerWallet) Update() {}
type MwAlias = MinerWallet
func (mw *MwAlias) Alias() {}
type MwOther MinerWallet
func (mw *MwOther) Other() {}
func init() {
var mw, mwAlias, mwOther = new(MinerWallet), new(MwAlias), new(MwOther)
mw.Alias()
mw.Other() // mw.Other undefined (type *MinerWallet has no field or method Other)
mwAlias.Update()
mwAlias.Other() // mwAlias.Other undefined (type *MinerWallet has no field or method Other)
mwOther.Update() // mwOther.Update undefined (type *MwOther has no field or method Update)
mwOther.Alias() // mwOther.Alias undefined (type *MwOther has no field or method Alias)
var mwEIfs, mwAliasEIfs, mwOtherEIfs interface{} = mw, mwAlias, mwOther
var name = reflect.TypeOf(mwEIfs).Elem().Name() // MinerWallet
name = reflect.TypeOf(mwAliasEIfs).Elem().Name() // MinerWallet
name = reflect.TypeOf(mwOtherEIfs).Elem().Name() // MwOther
fmt.Println(name)
}
type A = B: A是B的别名, 方法互相公用同一个绑定的method set 对象,A和B定义同一个方法名称会产生冲突
type A B: A和B结构一样,但是绑定的method set 对象不同,A不继承B的method set,A和B定义同一个方法名称不会产生冲突