什么是接收者
func (接收者名字 接收者类型) 方法名() {
}
值接收者示例
type treeNode struct {
value int
left, right *treeNode
}
func (node treeNode) print() {
fmt.Print(node.value)
}
指针接收者示例
func (node *treeNode) setValue(value int) {
if node == nil {
fmt.Println("setting value to nil node")
return
}
node.value = value
}
适用场景:
- 要改变内容必须使用指针接收者
- 结构过大也考虑使用指针接收者(因为值接收者是拷贝的)
- 一致性:如果有指针接收者,最好都使用指针接收者
- 值接收者是go语言特有的
- 值/指针接收者均可接收值/指针