5

golang.org の Go Playground を使用して簡単なプログラムを作成しました。

出力は明らかに次のとおりです。

second test
first test

マップ値をその場で編集する方法はありますか? のアドレスを取得できないことはわかっていa.Things[key]ます。それで、a.Things[key] = firstTestそれを行う唯一の方法は設定ですか?多分関数でChangeThing(key string, value string)

4

2 に答える 2

6

マップポインターの値を別の構造体にすることでそれを行うことができます。

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)
}
于 2012-12-18T21:26:04.683 に答える
3

ポインターをマップ値として使用できますhttp://play.golang.org/p/BCsmhevGMX

于 2012-12-18T21:30:29.237 に答える