值接收器和指针接收器的问题
来源:4-1 结构体和方法

三生三途
2020-08-11
type MyMap map[string]string
func (mp MyMap) Add(key, value string) {
mp[key] = value
}
func main() {
var mp = make(MyMap)
mp.Add("key", "value")
fmt.Println(mp) // map[key:value]
}
值传递为什么能改变外面map的值呢
写回答
1回答
-
ifcalm
2020-08-15
map创建的时候,字面值mp(文中创建map的变量)其实本身就是对底层数据的一个引用,这个引用生成的无数个副本的指向也都是同一份底层数据, 所以在函数中会让人产生引用传递的错觉.
而这里所谓的“引用”应该就是那个“标头值”,而标头值就是“包含一个指向底层数据结构的指针”.012020-08-17
相似问题