Bagaimana cara menghitung item di peta Go?

91

Jika saya ingin menghitung item dalam struktur peta, pernyataan apa yang harus saya gunakan? Saya mencoba menggunakan

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

tetapi tampaknya sintaksnya salah.

Shirley
sumber
2
Sedikit keluar dari topik, Anda juga bisa menggunakan for _ := range m {}, tidak perlu dua argumen di sana.
Elazar Leibovich
1
BTW, keduanya for _, _ := range m {...}dan for _ := range m {}tidak akan mengkompilasi b / c dari :=, yang tidak dapat digunakan _hanya dengan LHS. =harus digunakan dalam kasus ini sebagai gantinya.
zzzz

Jawaban:

179

Gunakan len(m). Dari 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

Berikut adalah beberapa contoh yang diporting dari dokumentasi SO yang sekarang sudah tidak digunakan lagi:

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

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

Jika sebuah variabel menunjuk ke nilpeta, lalu lenmengembalikan 0.

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

Dikutip dari Maps - Menghitung elemen peta . Penulis asli adalah Simone Carletti . Detail atribusi dapat ditemukan di halaman kontributor . Sumber berlisensi di bawah CC BY-SA 3.0 dan dapat ditemukan di arsip Dokumentasi . ID topik referensi: 732 dan ID contoh: 2528.

zzzz
sumber