Go:编辑代替地图值

时间:2012-12-18 21:08:14

标签: map go

我在golang.org使用Go Playground写了simple program

输出显然是:

second test
first test

有没有办法编辑地图值?我知道我不能接受a.Things[key]的任务。那么,设置a.Things[key] = firstTest是唯一的方法吗?也许使用函数ChangeThing(key string, value string)

2 个答案:

答案 0 :(得分: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)
}

答案 1 :(得分:3)

您可以使用指针作为地图值http://play.golang.org/p/BCsmhevGMX