流程控制
range
前言
在 Go 语言中,我们使用 range
关键字与 for
循环结合,来遍历数组、字符串或映射(map)的元素。在学习 range
之前,确保你对 Go 的 for
循环有一定了解。
作用
range
关键字允许我们在 for
循环中遍历集合类型的数据结构(如数组、字符串和映射),并访问集合中的每个元素及其索引或键值对。
使用场景
- 遍历数组: 在处理数组时,
range
可以帮助我们获取每个元素的值以及其索引。 - 处理字符串: 用于遍历字符串中的每个字符及其索引。
- 操作映射(map): 通过
range
遍历映射中的每对键值对,方便进行各种操作。
示例
- 示例 1: 使用
range
遍历数组
package main
import "fmt"
func main() {
// 数字数组
numbers := [5]int{21, 24, 27, 30, 33}
// 使用 range 遍历数组元素
for index, item := range numbers {
fmt.Printf("numbers[%d] = %d \n", index, item)
}
}
输出:
numbers[0] = 21
numbers[1] = 24
numbers[2] = 27
numbers[3] = 30
numbers[4] = 33
解释:
range
关键字返回两个值:- 数组索引:0, 1, 2,依此类推。
- 对应索引位置的数组元素:21, 24, 27,依此类推。
- 该示例中,我们遍历了数组
numbers
,并打印了每个元素及其索引。
- 示例 2: 使用
range
遍历字符串
package main
import "fmt"
func main() {
str := "Golang"
fmt.Println("Index: Character")
// i 访问每个字符的索引
// item 访问每个字符
for i, item := range str {
fmt.Printf("%d= %c \n", i, item)
}
}
输出:
Index: Character
0: G
1: o
2: l
3: a
4: n
5: g
解释:
range
关键字用于获取字符串中的每个字符及其索引。- 该示例中,我们遍历了字符串 “Golang”,并打印了每个字符及其对应的索引。
- 示例 3: 使用
range
遍历映射(map)
package main
import "fmt"
func main() {
// 创建一个映射
subjectMarks := map[string]float32{"Java": 80, "Python": 81, "Golang": 85}
fmt.Println("Marks obtained:")
// 使用 for range 遍历键值对
for subject, marks := range subjectMarks {
fmt.Println(subject, ":", marks)
}
}
输出:
Marks obtained:
Java: 80
Python: 81
Golang: 85
解释:
range
用于遍历映射中的每对键值对。- 该示例中,我们遍历了映射
subjectMarks
,并打印了每个科目及其对应的分数。
- 示例 4: 使用
range
仅访问映射的键
package main
import "fmt"
func main() {
// 创建一个映射
subjectMarks := map[string]float32{"Java": 80, "Python": 81, "Golang": 85}
fmt.Println("Subjects:")
// 使用 range 遍历映射的键
for subject := range subjectMarks {
fmt.Println(subject)
}
}
输出:
Subjects:
Java
Python
Golang
解释:
range
仅用于访问映射的键,而不获取值。- 该示例中,我们打印了映射
subjectMarks
中的所有科目名称。
结语
range
关键字在 Go 语言中提供了一种简洁的方式来遍历数组、字符串和映射中的元素。通过学习如何使用 range
,你可以高效地访问和操作各种数据结构,从而使代码更加简洁和易于理解。