请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

值接收器和指针接收器的问题

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的值呢

正在回答 回答被采纳积分+3

1回答

ifcalm 2020-08-15 21:24:53

map创建的时候,字面值mp(文中创建map的变量)其实本身就是对底层数据的一个引用,这个引用生成的无数个副本的指向也都是同一份底层数据, 所以在函数中会让人产生引用传递的错觉.
而这里所谓的“引用”应该就是那个“标头值”,而标头值就是“包含一个指向底层数据结构的指针”.

0 回复 有任何疑惑可以回复我~
  • 提问者 三生三途 #1
    所以为map创建方法时,使用值接收器和指针接收器都无所谓了吗,可以这么理解吗
    回复 有任何疑惑可以回复我~ 2020-08-17 15:16:43
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信