Golang for range循环语句的用法(非常详细,附带实例)
Go 语言中除了使用 for 循环,还可以使用 for range 循环,通过 for range 循环可以遍历数组、切片、集合、字符串及通道。
for range 循环的基本语法格式如下:
例如,定义包含 5 个元素的数组,并使用 for range 循环遍历输出数组,代码如下:
在实际开发中,可以根据需要省略 for range 循环中的 key 参数或 value 参数。省略 key 参数的使用格式如下:
省略 value 参数的使用格式如下:
例如,将《水浒传》中的几个人物的绰号和姓名定义在一个集合中,使用 for range 循环遍历输出人物姓名,代码如下:
在上述代码中,省略了 for range 循环中的 key 参数,只输出了集合中的值。下面省略 for range 循环中的 value 参数,遍历输出集合中的键,并通过键获取对应的值。代码如下:
for 循环和 for range 循环也可以互相嵌套。在 for 循环中可以使用 for range 循环,同样,在 for range 循环中也可以使用 for 循环。
【实例】输出乘法口诀表。使用嵌套的 for 循环语句输出乘法口诀表,代码如下:
for range 循环的基本语法格式如下:
for key, value := range coll { 语句 }参数说明如下:
- key:如果遍历的是数组、切片或字符串,该参数用于保存元素的索引。如果遍历的是集合,则该参数用于保存集合的键;
- value:用于保存元素的值;
- coll:要遍历的内容可以是数组、切片、集合、字符串或通道;
- 语句:用来指定循环体。
例如,定义包含 5 个元素的数组,并使用 for range 循环遍历输出数组,代码如下:
package main import "fmt" func main() { scores := [5]int{99, 96, 90, 88, 85} for i, v := range scores { fmt.Printf("第 %d 名: %d 分\n", i+1, v) } }运行结果如下:
第 1 名: 99分
第 2 名: 96分
第 3 名: 90分
第 4 名: 88分
第 5 名: 85分
在实际开发中,可以根据需要省略 for range 循环中的 key 参数或 value 参数。省略 key 参数的使用格式如下:
for _, value := range coll { 语句 }
省略 value 参数的使用格式如下:
for key, _ := range coll { 语句 }
例如,将《水浒传》中的几个人物的绰号和姓名定义在一个集合中,使用 for range 循环遍历输出人物姓名,代码如下:
package main import "fmt" func main() { name := map[string]string{ "及时雨": "宋江", "玉麒麟": "卢俊义", "行者": "武松", "豹子头": "林冲", "花和尚": "鲁智深", } for _, v := range name { fmt.Println(v) } }运行结果如下:
宋江
卢俊义
武松
林冲
鲁智深
在上述代码中,省略了 for range 循环中的 key 参数,只输出了集合中的值。下面省略 for range 循环中的 value 参数,遍历输出集合中的键,并通过键获取对应的值。代码如下:
package main import "fmt" func main() { name := map[string]string{ "及时雨": "宋江", "玉麒麟": "卢俊义", "行者": "武松", "豹子头": "林冲", "花和尚": "鲁智深", } for i := range name { fmt.Println(i, "——", name[i]) } }运行结果如下:
及时雨 —— 宋江
玉麒麟 —— 卢俊义
行者 —— 武松
豹子头 —— 林冲
花和尚 —— 鲁智深
Go语言for range循环嵌套
循环嵌套就是在一个循环语句的循环体中包含其他的循环语句。for 循环和 for range 循环也可以互相嵌套。在 for 循环中可以使用 for range 循环,同样,在 for range 循环中也可以使用 for 循环。
【实例】输出乘法口诀表。使用嵌套的 for 循环语句输出乘法口诀表,代码如下:
package main import "fmt" func main() { nums := []int{1, 2, 3, 4, 5, 6, 7, 8, 9} for i := range nums { for j := 1; j <= nums[i]; j++ { fmt.Print(j, "*", nums[i], "=", j*nums[i], "\t") } fmt.Print("\n") } }运行结果如下:
1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81