如何将字符串附加到字符串映射到接口类型

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 上试试这个。