Wie zähle ich Elemente in einer Go-Karte?

86

Welche Anweisung sollte ich verwenden, wenn ich die Elemente in der Kartenstruktur zählen möchte? Ich habe versucht zu benutzen

for _, _ := range m {...}

aber es scheint, dass die Syntax falsch ist.

Shirley
quelle
2
Etwas abseits des Themas können Sie auch verwenden for _ := range m {}, ohne dass zwei Argumente erforderlich sind.
Elazar Leibovich
1
Übrigens, beide for _, _ := range m {...}und for _ := range m {}kompilieren nicht b / c der :=, die nicht mit _nur LHSs verwendet werden können. =muss stattdessen in diesen Fällen verwendet werden.
zzzz

Antworten:

172

Verwenden Sie len(m). Von http://golang.org/ref/spec#Length_and_capacity

len(s)    string type      string length in bytes
          [n]T, *[n]T      array length (== n)
          []T              slice length
          map[K]T          map length (number of defined keys)
          chan T           number of elements queued in channel buffer

Hier sind einige Beispiele aus der SO-Dokumentation, die jetzt im Ruhestand ist:

m := map[string]int{}
len(m) // 0

m["foo"] = 1
len(m) // 1

Wenn eine Variable auf eine nilKarte zeigt, wird len0 zurückgegeben.

var m map[string]int
len(m) // 0

Auszug aus Karten - Kartenelemente zählen . Der ursprüngliche Autor war Simone Carletti . Zuordnungsdetails finden Sie auf der Beitragsseite . Die Quelle ist unter CC BY-SA 3.0 lizenziert und befindet sich im Dokumentationsarchiv . Referenzthema ID: 732 und Beispiel-ID: 2528.

zzzz
quelle