

for。没有 while,没有 do-while,只有 for!
和 C/Java 一样,但不需要括号。
// 初始化; 条件; 步进
for i := 0; i < 5; i++ {
fmt.Println("烤鸡翅", i)
}
省略前后,只留中间的条件,它就变成了 while。
hunger := 10
for hunger > 0 {
fmt.Println("吃吃吃")
hunger--
}
什么都不写,就是死循环。通常配合 break 使用。
for {
fmt.Println("我对秋香的爱绵绵不绝")
if 秋香答应了 {
break // 跳出循环
}
}
这是用来遍历数组、切片、字符串、Map 的神器。
nums := []int{9, 5, 2, 7}
// k 是索引,v 是值
for k, v := range nums {
fmt.Printf("第 %d 位是 %d\n", k, v)
}
// 如果只需要值,忽略索引
for _, v := range nums {
fmt.Println(v)
}
break: 跳出整个循环(不玩了)。continue: 跳过本次,直接进入下一次(这把不算,重来)。当你有双重循环(比如在找秋香)时,普通的 break 只能跳出一层。要想直接跳出所有循环,得用 Label。
FindLove: // 定义一个标签
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if i==5 && j==2 {
fmt.Println("找到秋香了!")
break FindLove // 直接跳到标签处,结束所有循环
}
}
}
计算 1 加到 100 的总和。
package main
import "fmt"
func main() {
sum := 0
for i := 1; i <= 100; i++ {
sum += i
}
fmt.Println(sum)
}
任务: 如果我只想计算偶数的和(2+4+6...),应该怎么改?
方法一: 步进改为 2
for i := 2; i <= 100; i += 2 { sum += i }
方法二: 使用 continue
for i := 1; i <= 100; i++ {
if i % 2 != 0 {
continue // 奇数跳过
}
sum += i
}