14.8.4 带 range 子句的 For 语句

range 子句的 for 语句可用于遍历范围表达式中的所有条目。它可以是数组、切片、map或字符串的可迭代类型。或者,它可以是允许接收操作的通道。

对于每个条目,它在将迭代值分配给相应的迭代变量之后执行块(如果指定的话)。

有三种不同的形式:

for range Expression { /* ... */ }
for ExpressionList = range Expression { /* ... */ }

迭代值被分配给相应的迭代变量,就像在赋值语句中一样。

for IdentifierList := range Expression { /* ... */ }

在这种形式中,使用了简短的变量声明语法。变量的类型被设置为相应迭代值的类型。它们的范围是for语句的块。

例子:

package main

func main() {
    arr := []int{1, 3, 5}

    length := 0
    for range arr {                    // 我们忽略了各元素的值
        length++
    }
    println("length =", length)

    e, sum := 0, 0
    for _, e = range arr {            // 本例中我们忽略了每个元素的索引
        sum += e
    }
    println("sum =", sum)

    idx, max := -1, 0
    for i, e := range arr {          // 变量i和e在每次迭代中都被重复使用
        if max < e {
            idx, max = i, e
        }
    }
    if idx >= 0 {
        println("idx =", idx, "max =", max)
    }
}

最后更新于