用过Go语言的同学大概率遇到过这样的场景:声明了一个指针变量没初始化(默认是nil),却能直接调用它的方法,程序不仅不崩溃,还能正常输出结果。
比如这段代码:
package main
import "fmt"
type A struct {}
func (a *A) Foo() {
fmt.Println("调用了A的Foo方法")
}
func main() {
var a *A // a是nil
a.Foo() // 正常输出:调用了A的Foo方法
}