如何将字符串附加到字符串映射到接口类型
how to append string to the map of string to interface type
我创建了一个字符串映射到接口{}
x := make(map[string]interface{})
最终我需要以下输出
x["key1"] = ["value1","value2","value3", ......]
任何人都可以帮助,如何将字符串值附加到此地图?
您只能附加到切片,不能附加到地图。
要添加您列出的值,请使用:
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
类型,则上述代码将出现错误。为防止出现此类恐慌,仅当值存在且类型为 []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 上试试这个。
我创建了一个字符串映射到接口{}
x := make(map[string]interface{})
最终我需要以下输出
x["key1"] = ["value1","value2","value3", ......]
任何人都可以帮助,如何将字符串值附加到此地图?
您只能附加到切片,不能附加到地图。
要添加您列出的值,请使用:
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
类型,则上述代码将出现错误。为防止出现此类恐慌,仅当值存在且类型为 []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 上试试这个。