Jak liczyć przedmioty na mapie Go?

89

Jeśli chcę policzyć elementy w strukturze mapy, jakiej instrukcji powinienem użyć? Próbowałem użyć

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

ale wydaje się, że składnia jest fałszywa.

shirley
źródło
2
Nieco poza tematem, możesz również użyć for _ := range m {}, nie ma potrzeby stosowania dwóch argumentów.
Elazar Leibovich
1
BTW, oba for _, _ := range m {...}i for _ := range m {}nie będą kompilować b / c :=, którego nie można używać _tylko z LHS. =w takich przypadkach należy użyć zamiast tego.
zzzz

Odpowiedzi:

176

Użyj len(m). Z 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

Oto kilka przykładów przeniesionych z wycofanej dokumentacji SO:

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

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

Jeśli zmienna wskazuje na nilmapę, lenzwraca 0.

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

Wyciąg z map - Liczenie elementów mapy . Oryginalnym autorem była Simone Carletti . Szczegóły atrybucji można znaleźć na stronie współtwórcy . Źródło jest objęte licencją CC BY-SA 3.0 i można je znaleźć w archiwum Dokumentacji . Identyfikator tematu odniesienia: 732 i identyfikator przykładu: 2528.

zzzz
źródło