我发现很难理解Go在内部是如何工作的。在某些情况下,它表现出奇怪的行为。
type TestInterface interface {
Walk()
}
type A struct {
}
func (a *A) Walk() {
fmt.Println("hello world")
}
type B struct {
TestInterface
}
func main() {
var a *A
b := B{}
a.Walk() // This will not panic even though a is nil
b.Walk() // This will panic.
}
由于 嵌入 ,将以与调用类似的方式在结构上内部调用方法。bTestInterfaceb.Walk()WalkAa.Walk()
为什么一个有效而另一个恐慌呢?
MYYA
芜湖不芜
相关分类