Dictionary 如何在Go映射中指定结构字段

Dictionary 如何在Go映射中指定结构字段,dictionary,go,assign,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 ta

我想分配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)
}
我可以在变量
task
中分配
Desc
字段,但不能在包装映射
taskMap
中分配,出了什么问题?

您可以使用指针:

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

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

谢谢,根据你提到的问题,我找到了一种方法来实现这一点,那就是复制
任务地图的
任务,将其更改,然后再将其放回地图,但我发现不就地更改它很奇怪。