如何在Go的地图中指定struct的字段

时间:2015-01-15 09:08:26

标签: dictionary go assign

我想在这样的地图中指定struct的字段:

package main

import (
    "fmt"
)

type Task struct {
    Cmd string
    Desc string
}

var taskMap = map[string] Task{
    "showDir": Task{
        Cmd: "ls",
    },
    "showDisk": Task{
        Cmd: "df",
    },
}

var task = Task{
    Cmd: "ls",
}

func main() {
    // *Error*cannot assign to taskMap["showDir"].Desc
    taskMap["showDir"].Desc = "show dirs" 
    task.Desc = "show dirs" // this is ok.
    fmt.Printf("%s", taskMap)
    fmt.Printf("%s", task)
}

我可以在变量Desc中分配task字段,但不能在已包装的地图taskMap中分配,出了什么问题?

1 个答案:

答案 0 :(得分:1)

您可以使用指针:

var taskMap = map[string]*Task{
    "showDir": {
        Cmd: "ls",
    },
    "showDisk": {
        Cmd: "df",
    },
}

func main() {
    taskMap["showDir"].Desc = "show dirs"
    fmt.Printf("%+v", taskMap["showDir"])
}

playground