什么是接收者
func (接收者名字 接收者类型) 方法名() {}
值接收者示例
type treeNode struct {value intleft, 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语言特有的
- 值/指针接收者均可接收值/指针