一个指向自定义类型的值的指针,它的方法集由该类型定义的所有方法组成,无论这些方法接受的是一个值还是一个指针。如果在指针上调用一个接受值的方法,Go语言会聪明地将该指针解引用,并将指针所指的底层值作为方法的接收者
~~~
package main
import "fmt"
type Student struct {
name string
age int
}
// 指针作为接收者 引用语义
func (s *Student) SetStuPointer() {
(*s).name = "Bob"
s.age = 18
}
// 值作为接收者 值语义
func (s Student) SetStuValue() {
s.name = "Peter"
s.age = 18
}
func main() {
//指针作为接收者,引用语义
s1 := &Student{"Miller", 18} //初始化
s1 .SetStuPointer()
s1.SetStuValue()
(*s1).SetStuValue()
fmt.Println(s1) // &{Bob 18}
}
~~~