循环 for/range
for 是唯一的循环关键字、经典/条件/无限/range 四种形态
循环 for/range
Go 只有 for 一种循环关键字——但它有四种形态,覆盖了其他语言的 for/while/do-while。
学完本章你将: 掌握经典 for、条件 for、无限 for、range for。
四种 for 形态
go
package main
import "fmt"
func main() {
// 1. 经典 C 风格(初始化; 条件; 后置)
for i := 0; i < 5; i++ {
fmt.Print(i, " ") // 0 1 2 3 4
}
fmt.Println()
// 2. 条件风格(相当于 while)
n := 0
for n < 5 {
fmt.Print(n, " ") // 0 1 2 3 4
n++
}
fmt.Println()
// 3. 无限循环(相当于 while true)
// for {
// // 需要 break 退出
// }
// 4. range 遍历(最常用)
nums := []int{10, 20, 30}
for i, v := range nums {
fmt.Printf("nums[%d]=%d\n", i, v)
}
}
range 遍历大全
go
// 切片:index, value
for i, v := range slice { }
// Map:key, value
for k, v := range m { }
// 字符串:index, rune(Unicode 码点)
for i, r := range "你好" { }
// Channel:读取直到关闭
for v := range ch { }
// 忽略值
for i := range slice { } // 只要索引
for _, v := range slice { } // 只要值
break / continue
go
// break 标签——跳出多层循环
outer:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i*j > 2 {
break outer // 跳出外层循环
}
}
}