Z
ZHANK
控制流程

循环 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  // 跳出外层循环
        }
    }
}