登录
首页 >  Golang >  Go问答

从地图值追加切片不会影响地图

来源:stackoverflow

时间:2024-04-01 21:42:26 175浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《从地图值追加切片不会影响地图》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

mp := map[int][]int{}
slice := make([]int, 0, 1)
fmt.printf("slice address:%p\n", slice)
mp[0] = slice
slice = append(slice, 1)
fmt.println("after append")
fmt.printf("slice address:%p\n", slice)
fmt.println("slice:", slice)
fmt.println("mp[0]:", mp[0])
fmt.printf("mp[0] address:%p\n", mp[0])

输出:

slice address:0xc042008f78  
after append  
slice address:0xc042008f78  
slice: [1]  
mp[0]: []  
mp[0] address:0xc042008f78

切片的地址不会改变,因为它的上限在附加过程中足够大。那么为什么map值不生效呢?


解决方案


Go Slices: usage and internals 中所述,两个切片可能指向相同的内存位置,但可能具有不同的 lencap 属性。

以上就是《从地图值追加切片不会影响地图》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>