在这篇博文中,我们将通过实例来学习Go语言中的for each loop with range。
Golang for each 循环
foreach循环是一个带有范围关键字的for循环。它被用来遍历数组、片断、地图和字符串中的每个元素。这对于迭代数据结构中的元素,而不需要获得数据结构的长度,总是很有用的。 带范围的for循环的语法如下
for key, value := range collection{
// body
}
在一个集合的迭代过程中,每个迭代都包含键或索引,值或索引处的元素。
带范围的循环关键字的几个关键点:
- 这是用来迭代集合类型的元素的。
- 每个迭代数据包含两个部分,一个是键或索引,第二个是值或索引处的元素
- 迭代元素的顺序在一个集合中是没有顺序的,也没有被保留下来。
- 在数组迭代过程中,使用键作为_来检索值
- 对于数组和切片,第一个元素是一个索引,第二个值是每个迭代的索引位置上的一个元素
- 如果数组或片断是空的,它不返回任何东西
对于每个数组范围的迭代例子
下面是一个数字数组迭代的例子
package main
import "fmt"
func main() {
// Iterate numeric array
numbers := [3]int{6, 9, 3}
for key, value := range numbers {
fmt.Printf("%d = %d\n", key, value)
}
}
输出是
0 = 6
1 = 9
2 = 3
对于数组的迭代,第一个变量的迭代值可以通过_来实现。
func main() {
// Iterate numeric array
numbers := [3]int{6, 9, 3}
for _, value := range numbers {
fmt.Printf("%d ", value)
}
}
输出为
6 9 3
另一种方法是使用迭代值的索引参数来遍历数组中的元素
func main() {
// Iterate numeric array
numbers := [3]int{6, 9, 3}
for i := range numbers {
fmt.Printf("%d ", numbers[i])
}
}
输出是
6 9 3
使用范围关键字的迭代例子
下面的例子涵盖了以下内容
- 遍历数字数组中的元素
- 遍历字符串数组中的元素
- 在字符串的Unicode字符中迭代元素
- 在Map中遍历元素
package main
import "fmt"
func main() {
// Create Numeric array
numbers := [3]int{6, 9, 3}
// Iterate numeric array
for key, value := range numbers {
fmt.Printf("%d = %d\n", key, value)
}
// Create String array
strs := [3]string{"one", "two", "three"}
// Iterate String array
for key, value := range strs {
fmt.Printf("%d = %s\n", key, value)
}
/* create a map*/
emps := map[string]string{"1": "John", "2": "Franc", "3": "Kiran"}
/* Iterate map using keys*/
for emp := range emps {
fmt.Println("Emp Id: ", emp, " Name: ", emps[emp])
}
/* Iterate Unicode charactes of a String*/
for index, character := range "本語日" {
fmt.Printf("%#U position %d\n", character, index)
}
}
上述程序代码的输出是
0 = 6
1 = 9
2 = 3
0 = one
1 = two
2 = three
Emp Id: 1 Name: John
Emp Id: 2 Name: Franc
Emp Id: 3 Name: Kiran
U+672C '本' position 0
U+8A9E '語' position 3
U+65E5 '日' position 6