我想获得一个指向映射值(其中包含结构)的指针,以便我可以修改结构中的字段,而无需重新分配它。
type Foo struct {
Bar int64
}
func SomeFunction(arg * Foo) {
...
}
Run Code Online (Sandbox Code Playgroud)
我目前要做的事情:
if val, ok := myMap[idx]; ok {
// val is of type `Foo`
SomeFunction(&val)
myMap[idx] = val
}
Run Code Online (Sandbox Code Playgroud)
我想做的事:
if val, ok := getPointer(myMap, idx); ok {
// val is of type `* Foo`
SomeFunction(val)
}
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点Go,或者我需要依赖编译器足够聪明来执行复制省略?
对于此操作,您可以使用map指针。喜欢:
var myMap map[int]*Foo
if _, val := range myMap {
// val is of type `* Foo`
SomeFunction(val)
}
Run Code Online (Sandbox Code Playgroud)