Dictionary 如何在Go映射中指定结构字段
我想分配struct字段,该字段位于以下映射中: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
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"])
}
谢谢,根据你提到的问题,我找到了一种方法来实现这一点,那就是复制
任务地图的任务,将其更改,然后再将其放回地图,但我发现不就地更改它很奇怪。