附加到作为地图中值的切片

时间:2018-12-03 06:17:20

标签: pointers go slice go-map

我想附加到作为地图值的切片,例如给定m boolean b = true; MyInterface correctClass = ClassFactory.MyInterface(b);

map[string][]string

那显然是行不通的,所以我尝试了如下操作:

if values, exists := m[key]; exists {
    values = append(values, v)
//  I don't want to call: m[key] = values
} else {
    m[key] = []string{ v }
}

但这也不起作用。我该怎么办?

1 个答案:

答案 0 :(得分:3)

您不能那样做。

append返回一个新的切片,因为可能需要调整切片的大小才能完成追加。您必须更新地图以使用新返回的切片,如果不通过键引用,则无法完成此操作。