Pointers Go:指针作为映射键类型

Pointers Go:指针作为映射键类型,pointers,dictionary,go,set,Pointers,Dictionary,Go,Set,我正在寻找一种合适的方法来实现一组指向struct的指针。显而易见的方法是使用内置的map: map[*SomeStructure]struct{} 但Go内存模型是否保证将指针用作map键类型是安全的? 由于地址空间碎片整理,运行时不可能优化指针地址吗?指向结构{}的指针是什么意思。如果您试图实现SET,则可以使用指针作为映射键。我不知道“优化指针地址”意味着什么。@JimB我怀疑go运行时可能会为某种优化更改指针地址值。这绝对不可能吗?@VitalyIsaev:你为什么怀疑?指针值是语言的

我正在寻找一种合适的方法来实现一组指向
struct
的指针。显而易见的方法是使用内置的
map

map[*SomeStructure]struct{}
但Go内存模型是否保证将指针用作
map
键类型是安全的?
由于地址空间碎片整理,运行时不可能优化指针地址吗?

指向结构{}的指针是什么意思。如果您试图实现SET,则可以使用指针作为映射键。我不知道“优化指针地址”意味着什么。@JimB我怀疑go运行时可能会为某种优化更改指针地址值。这绝对不可能吗?@VitalyIsaev:你为什么怀疑?指针值是语言的一个基本部分,如果有任何优化需要移动指针(这是不可能发生的),则需要对用户透明地进行。指针在整个std库中用作映射键,只需搜索
map[*