目前我正在存储一个地图,其中键是一个结构(MyIntC)。 我想将地图中的所有关键字检索为切片。 切片将是指向地图键的指针。 这样就没有多个密钥的副本。

当我在这里尝试(https://play.golang.org/p/bclmCh_YV5)时,它无法正常工作。

切片中的所有元素都将指向迭代的最后一个map键元素。

为什么会这样? 我怎么能克服这个?

注意:我怀疑它与Slice of structs和一系列指向结构的指针是非常相似的问题,其中我总是使用局部变量地址。

谢谢。


您对范围循环中与k相关的问题是正确的。 k是一个局部变量,在每次迭代中,您只需将相同的指针地址添加到slice

您始终可以使用指向MyIntC的指针作为地图键。

工作示例:https://play.golang.org/p/Opd7RVywNa