range子句对于不同的数据结构类型(如map)返回哪些不同的变量?

huangapple go评论92阅读模式
英文:

Which different variables does range clause return for different data structure types like map?

问题

当循环遍历一个数组时,第一个返回的变量是索引,第二个返回的变量是值:

array := []int{2, 3, 4}
for index, value := range array {
    fmt.Printf("索引: %s, 值: %s\n", index, value)
}

当使用range子句循环遍历一个映射(map)时,返回的内容与数组不同。映射中没有索引的概念,但我们可以获取键名。

英文:

When looping through an array, the first variable returned is the index, and the second variable returned is the value:

array := []int{2, 3, 4}
for index, value := range array {
    fmt.Printf("Index: %s, Value: %s\n", index, value)
}

What is returned when looping through map with the range clause. It is not the same as for array. There cannot be an index of a map anyway. Can we get key names?

答案1

得分: 3

根据range子句的文档,以下是它与不同类型一起使用时返回的值:

  • 数组或切片 a [n]E*[n]E[]E

    • 第一个值: 索引 i int
    • 第二个值(可选): a[i] 的元素 E
  • 字符串 s string 类型:

    • 第一个值: 索引 i int
    • 第二个值(可选): 字符的 Unicode 值 int(要获取实际字符,只需进行类型转换,如 string(value)
  • 映射 m map[K]V

    • 第一个值:k K
    • 第二个值(可选):m[k] 的类型 V
  • 通道 c chan E

    • 第一个值: 元素 e E

点击这里查看简化版

英文:

As per the documentation of range clause, following are the returned values for different kinds of types that it is used with:

  • array or slice a [n]E, *[n]E, or []E:

  • 1st value: index i int

  • 2nd value (optional): a[i] E (element at index i)

  • string s string type

  • 1st value: index i int

  • 2nd value (optional): rune int (the unicode of the character. to get the actual character, simply cast like this: string(value))

  • map m map[K]V:

  • 1st value: key k K

  • 2nd value (optional): value m[k] V

  • channel c chan E:

  • 1st value: element e E

Simplified read here

huangapple
  • 本文由 发表于 2017年5月8日 16:43:30
  • 转载请务必保留本文链接:https://go.coder-hub.com/43843280.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定