当前位置: 代码迷 >> 综合 >> Golang 值接收者与指针接收者
  详细解决方案

Golang 值接收者与指针接收者

热度:55   发布时间:2023-11-27 10:36:30.0

什么是接收者

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
}

适用场景:

  1. 要改变内容必须使用指针接收者
  2. 结构过大也考虑使用指针接收者(因为值接收者是拷贝的)
  3. 一致性:如果有指针接收者,最好都使用指针接收者
  • 值接收者是go语言特有的 
  • 值/指针接收者均可接收值/指针