2014-04-20 14 views
5

Es gibt eine praktische Abkürzung für Wörterbücher in Python - setdefault-Methode. wenn ich dict Zum Beispiel haben die darstellt, Abbildung von String-Liste, ich so etwas wie diesesAnalog von Pythons setdefault in Golang

if key not in map: 
    map[key] = [] 
map[key].append(value) 

auch dies ist ausführlich und mehr pythonic Weg, dies zu tun schreiben kann, ist wie folgt:

map.setdefault(key, []).append(value) 

Es gibt übrigens eine Standarddict-Klasse.

Also meine Frage ist - gibt es etwas ähnliches für Karten in Go? Ich ärgere mich wirklich mit Typen wie map [string] [] int und ähnlichem.

Antwort

6

Es gibt nicht so etwas speziell für die Karten, aber nil ist eine gültige leere Scheibe (die mit dem append builtin verwendet werden können), so dass der folgende Code:

x := make(map[string][]int) 
key := "foo" 
x[key] = append(x[key], 1) 

unabhängig davon arbeiten, ob key existiert in der Karte oder nicht.

1

Es funktioniert gut mit der Standard-Karte, play:

m := make(map[string][]int) 
m["test0"] = append(m["test0"], 10) 
m["test1"] = append(m["test1"], 10) 
m["test2"] = append(m["test2"], 10) 
+2

Aber bemerken sollte, dass es nicht für Karte Karten arbeiten, sollten Sie noch explizit 'make' Kartenwerte. – maxbublis