Golang教程 - for each loop with range的例子

302 阅读2分钟

在这篇博文中,我们将通过实例来学习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