Goマップのアイテムを数える方法は?


89

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

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

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


2
少しトピックから外れて、使用することもできますfor _ := range m {}。2つの引数は必要ありません。
Elazar Leibovich 2012

1
ところで、両方ともfor _, _ := range m {...}、のfor _ := range m {}b / cをコンパイルしません:=。これは、_LHSのみでは使用できません。=この場合、代わりに使用する必要があります。
zzzz 2012

回答:


176

を使用し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マップを指している場合、len0を返します。

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

マップからの抜粋-マップ要素のカウント。原作者はSimoneCarlettiでした。アトリビューションの詳細は、コントリビューターページにあります。ソースはCCBY-SA 3.0でライセンスされており、ドキュメントアーカイブにあります。参照トピックID:732およびサンプルID:2528。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.