结构体

接受者为指针

1
2
3
4
5
func (dog *Dog) SetName(name string) {
dog.name = name
}
(&dog).SetName("大黄") // 调用
dog.Call() // 大黄

该使用值接收者还是指针接收者,取决于是否现需要修改原始结构体:

  • 若不需要修改则使用值,若需要修改则使用指针
  • 若存在指针接收者,则所有方法使用指针接收者

对于接收者为指针类型的方法,需要注意在运行时若接收者为 nil 会发生错误。