如果我想统计地图结构中的项目,我应该使用什么语句?我试着用
for _, _ := range m {...}
但似乎语法是错误的。
使用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。原作者是西蒙娜·卡莱蒂。可以在贡献者页面上找到归属详细信息。源代码在CC BY-SA 3.0下获得许可,可以在文档存档中找到。参考主题 ID:732 和示例 ID:2528。
对于任何想要计算嵌套地图中元素数量的人:
var count int
m := map[string][]int{}
for _, t := range m {
count += len(t)
}