如何在Go中获取指向地图中值的指针

时间:2017-11-27 02:17:10

标签: go

我想得到一个指向地图值(包含结构)的指针,这样我就可以修改结构中的字段,而不必重新赋值。

type Foo struct {
    Bar int64
}

func SomeFunction(arg * Foo) {
    ...
}

我目前要做的事情:

if val, ok := myMap[idx]; ok {
  // val is of type `Foo`
  SomeFunction(&val)
  myMap[idx] = val
}

我想做什么:

if val, ok := getPointer(myMap, idx); ok {
  // val is of type `* Foo`
  SomeFunction(val)
}

有没有办法做到这一点Go,还是我需要依赖编译器足够智能来执行复制省略?

1 个答案:

答案 0 :(得分:1)

对于此操作,如果指针,您可以使用map。像:

var myMap = map[int]*Foo

if _, val := range myMap {
  // val is of type `* Foo`
  SomeFunction(val)
}