映射的键作为指向结构的指针?(用例)

给定一个结构:

type Foo struct {
    Bar int
    }

选项1,地图的关键:struct value

map[Foo]bool

选项2,地图的关键:pointer to struct

map[*Foo]bool

在某些情况下我必须选择选项 2吗?IE:

  1. 内存效率?

  2. 巨大的结构价值?

一般来说,将 map 的键设为 的合理用例有哪些pointer to struct


守着星空守着你
浏览 138回答 1
1回答

30秒到达战场

对于这种特定情况,指针不会真正起作用,因为例如:func main() {    m1, m2 := map[Vertex]int{}, map[*Vertex]int{}    a, b := Vertex{10}, Vertex{10}    m1[a], m2[&a] = 10, 10    fmt.Println(m1[a], m1[b], m1[a] == m1[b])    fmt.Println(m2[&a], m2[&b], m2[&a] == m2[&b])    fmt.Printf("%p %p", &a, &b)}// 编辑问题后编辑使用指针的唯一原因是结构的内容不可比较(又名切片或映射等),或者如果按值使用它太大会导致性能问题。恕我直言,您当前的情况应该使用值而不是指针。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go