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 也成功了。百思不得其解
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.