web-dev-qa-db-ja.com

Goマップ内のアイテムをカウントする方法は?

マップ構造内のアイテムをカウントする場合、どのステートメントを使用する必要がありますか?使ってみた

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

しかし、構文は間違っているようです。

73
shirley

len(m)を使用します。から 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

廃止されたSOのドキュメントから移植されたいくつかの例を次に示します。

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

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

変数がnilマップを指す場合、lenは0を返します。

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

Maps-Counting map elements から抜粋。元の著者は Simone Carletti でした。属性の詳細は、 投稿者ページ にあります。ソースは CC BY-SA 3. でライセンスされており、 Documentation archive にあります。参照トピックID:732および例ID:2528。

150
zzzz