type I interface {
A()
B()
C()
}
type Test struct {
name string
}
func (t Test)A(){
fmt.Println("A()")
}
func (t *Test)B(){
fmt.Println("B()")
}
func (t *Test)C(){
fmt.Println("C()",t.name)
}
func main() {
var t *Test = nil
//t.A()
t.B()
//t.C()
var i I = t
//i.A()
i.B()
//i.C()
}
t.A() --->(*t).A() t是nil 所以 会触发panic ( panic: runtime error: invalid memory address or nil pointer dereference)
t.B() 虽然t是nil 但是它是有类型的,有类型就能找到对应的方法集合,B()里边的操作和t没有任何关系 所以能正常调用
t.C() 跟B()类似,虽然能正常调用到C(),但是访问name会出问题的。。。
如果把为nil的t 赋值给 接口变量i 结果也是一样的。。。