我想得到一个指向地图值(包含结构)的指针,这样我就可以修改结构中的字段,而不必重新赋值。
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,还是我需要依赖编译器足够智能来执行复制省略?
答案 0 :(得分:1)
对于此操作,如果指针,您可以使用map
。像:
var myMap = map[int]*Foo
if _, val := range myMap {
// val is of type `* Foo`
SomeFunction(val)
}