【发布时间】:2021-09-06 20:20:48
【问题描述】:
我创建了一个字符串到接口{}的映射
x := make(map[string]interface{})
最终我需要以下输出
x["key1"] = ["value1","value2","value3", ......]
谁能帮忙,如何将字符串值附加到这张地图?
【问题讨论】:
标签: dictionary go slice
我创建了一个字符串到接口{}的映射
x := make(map[string]interface{})
最终我需要以下输出
x["key1"] = ["value1","value2","value3", ......]
谁能帮忙,如何将字符串值附加到这张地图?
【问题讨论】:
标签: dictionary go slice
您只能附加到切片,不能附加到地图。
要添加您列出的值,请使用:
x["key"] = []string{"value1","value2","value3"}
fmt.Println(x)
如果"key"已经存在,你可以使用type assertion追加:
x["key"] = append(x["key"].([]string), "value4", "value5")
fmt.Println(x)
输出(试试Go Playground上的例子):
map[key:[value1 value2 value3]]
map[key:[value1 value2 value3 value4 value5]]
注意:您必须重新分配新切片(由append() 返回)。
还要注意,如果"key" 还没有在地图中或者不是[]string 类型,那么上面的代码将会出现panic。为了防止这种恐慌,只有当值存在并且类型为[]string时才追加:
if s, ok := x["key"].([]string); ok {
x["key"] = append(s, "value4", "value5")
} else {
// Either missing or not []string
x["key"] = []string{"value4", "value5"}
}
在Go Playground 上试试这个。
【讨论】: