gpt4 book ai didi

go - 从 map 值追加 slice 不会影响 map

转载 作者:IT王子 更新时间:2023-10-29 02:25:19 27 4
gpt4 key购买 nike

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

slice 的地址不会改变,因为它的上限在附加期间足够大。那么为什么map值不生效呢?

最佳答案

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

关于go - 从 map 值追加 slice 不会影响 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52056098/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com