package main
import "fmt"
type MyService struct {
Name string
}
func (s *MyService) PName() {
fmt.Printf("name1 %s\n", s.Name)
s.Name = "zhangsan"
fmt.Printf("name2 %s\n", s.Name)
}
func main() {
var service MyService
service.PName()
fmt.Printf("name3 %s\n", service.Name)
}
///output
name1
name2 zhangsan
name3 zhangsan
代码很简单,无法理解的是 var service MyService 。根据我目前看的学习文档,这个只是声明了一个变量,其类型为 MyService ,而没有绑定到任何内存区域,为什么后续的方法调用没出现空指针报错呢.赋值 Name 也成功了。百思不得其解