结构体指针作为map key 结构体值改变对map有影响吗
最近偶然用到了结构体指针作为map key 的场景。当时有点不太确定:go 语言使用map 时使用指针p作为key, 那修改指针p的值之后。这map 还包含p 吗?
接下来让我们一起看看:
当将指针作为 Map 的 Key 时,实际上是把指针的值作为键来进行插入和查找操作。因此,如果修改了该指针所指向的变量的值,那么并不会影响已经添加到 Map 中的键。因为这个指针仍然具有相同的值,所以它可以被用作一个标识符来检索和操作存储在Map中的数据
例如,以下代码定义了一个map[*int]string类型的映射,将指针p用作key来插入和索引数据:
1 |
|
在上面的示例中,我们首先创建了一个指针p,指向变量x的地址,并把p用作key将字符串”A”添加到了map中。
接下来,我们修改了变量x的值,将其从1修改为2。但是,当我们再次输出映射m时,发现其中的元素仍然是[p:”A”]。这是因为,在修改变量的值后,指针p的地址仍然相同,因此该指针作为键在Map中仍然有效。映射使用的是地址而不是变量的名称或值,因此不受值的更改的影响。
总之,在将指针用作Map键时,必须理解这种行为,并根据需要编写代码来处理和管理指针及其地址的值。
结构体指针作为map key 结构体值改变对map有影响吗
https://leiqi.top/2023-05-10-7dfabb45bbc2.html