104

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

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

但似乎语法是错误的。

4

2 回答 2

208

使用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。

于 2012-09-22T14:52:19.387 回答
3

对于任何想要计算嵌套地图中元素数量的人:

  var count int
  m := map[string][]int{}
  for _, t := range m {
    count += len(t)
  }
于 2021-02-11T16:29:58.170 回答