如何计算Go地图中的项目?


88

如果我想计算地图结构中的项目,应该使用什么语句?我尝试使用

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

但似乎语法是错误的。


2
稍微偏离主题,您也可以使用for _ := range m {},在那里不需要两个参数。
Elazar Leibovich 2012年

1
顺便说一句,两者for _, _ := range m {...}for _ := range m {}都不会编译的b / c :=,而不能_仅与LHS一起使用。=在这种情况下必须使用。
zzzz 2012年

Answers:


175

使用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-对地图元素进行计数。原始作者是西蒙妮·卡莱蒂Simone Carletti)。归属详细信息可以在贡献者页面上找到。该来源已获得CC BY-SA 3.0的许可,可以在“文档”存档中找到。参考主题ID:732和示例ID:2528。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.