1.值传递 传递给函数的是值得副本,引用传递,传递得是地址得副本。地址值copy,数据量小。值copy,数据量大,效率低。
2.值类型和引用类型
值类型:基本数据类型 ,数组,结构体
引用类型:指针,切片,map,chan,接口
3.使用示例
type Vertex struct {
X, Y float64
}
//指针接收
func (v *Vertex) Scale(f float64) {
v.X = v.X * f
v.Y = v.Y * f
}
func main() {
//非标准用法
v := Vertex{3, 4}
v.Scale(2)
//标注用法 地址值调用
p := &Vertex{3, 4}
p.Scale(2)
//v,p 的结果是一致的。因为 v.Scale()会被默认 (&v).Scale()
fmt.Println(v, p)
}