目录
值类型和指针类型
方法也有值类型的方法和指针类型的区别,也就是以下两种receiver:
func (p person) setname(name string) { p.name = name }
func (p *person) setage(age int) { p.age = age }
setname()方法中是值类型的receiver,setage()方法中是指针类型的receiver。它们是有区别的。
- 首先,setage()方法的p是一个指针类型的person实例,所以方法体中的
p.age
实际上等价于(*p).age
。再者,方法就是函数,Go中所有需要传值的时候,都是按值传递的,也就是拷贝一个副本。
setna