在Golang中,循环结构只有for这一个关键字,但它足以应对计数循环、遍历切片和Map等常见需求。理解for与range的配合方式,是编写Go程序的基础能力。

使用for进行基础计数循环
最常见的写法类似其他语言的三段式循环,不过Go把初始化、条件和后置语句都放在for后面,用分号隔开。
package main
import "fmt"
func main() {
// 基础for循环,从0打印到4
for i := 0; i < 5; i++ {
fmt.Println("当前i的值为:", i)
}
}
用range遍历切片
切片是Go里常用的动态数组,使用range可以同时拿到下标和元素值。如果只需要值,可以用下划线忽略下标。
package main
import "fmt"
func main() {
nums := []string{"苹果", "香蕉", "橙子"}
// 同时获取下标和值
for idx, val := range nums {
fmt.Printf("下标%d 对应值%sn", idx, val)
}
// 只获取值,忽略下标
for _, val := range nums {
fmt.Println("水果:", val)
}
}
用range遍历Map
Map的遍历同样使用range,每次返回键和值。需要注意的是,Go中Map的遍历顺序是不固定的,不要依赖特定顺序处理逻辑。
package main
import "fmt"
func main() {
score := map[string]int{
"语文": 88,
"数学": 95,
"英语": 79,
}
// 遍历Map,获取键和值
for subject, point := range score {
fmt.Printf("%s 成绩为 %dn", subject, point)
}
}
常见注意点
- for后面不需要小括号,但循环体大括号必须存在
- range遍历Map时,每次运行顺序可能不同,这是Go的故意设计
- 在循环里启动goroutine时,要注意变量捕获问题,可改用局部变量或传参
通过上述示例可以看到,Go语言虽然只提供for一种循环形式,但结合range已经能优雅地完成切片与Map的遍历任务。熟练运用这些写法,有助于提升代码的可读性和维护性。