私はをgolang.orgのGo Playgroundを使って書きました。Go:地図の値の代わりに編集
出力は明らかである:
second test
first test
は、場所のマップの値を編集する方法はありますか?私はa.Things[key]
の控訴を取ることができないことを知っています。だから、a.Things[key] = firstTest
を設定する唯一の方法は?たぶん、関数ChangeThing(key string, value string)
で?
私はをgolang.orgのGo Playgroundを使って書きました。Go:地図の値の代わりに編集
出力は明らかである:
second test
first test
は、場所のマップの値を編集する方法はありますか?私はa.Things[key]
の控訴を取ることができないことを知っています。だから、a.Things[key] = firstTest
を設定する唯一の方法は?たぶん、関数ChangeThing(key string, value string)
で?
マップの値を別の構造体に変換することで可能です。
http://play.golang.org/p/UouwDGuVpi
package main
import "fmt"
type A struct {
Things map[string]*str
}
type str struct {
s string
}
func (a A) ThingWithKey(key string) *str {
return a.Things[key]
}
func main() {
variable := A{}
variable.Things = make(map[string]*str)
variable.Things["first"] = &str{s:"first test"}
firstTest := variable.ThingWithKey("first")
firstTest.s = "second test"
fmt.Println(firstTest.s)
fmt.Println(variable.ThingWithKey("first").s)
}
ありがとうマップ値としてポインタを使用することができます!これについて考えなかった。あなたの提案は私にとって素晴らしい作品です。 – Donovan