ZetCode

Golang for 关键字

最后修改于 2025 年 5 月 7 日

本教程解释了如何在 Go 中使用 for 关键字。我们将通过 Go 编程中迭代的实际示例来介绍循环基础知识。

for 语句是 Go 中唯一的循环结构。它可以用于三种形式:传统 for 循环、while 循环和无限循环。

在 Go 中,for 提供了您所需的所有循环功能。它用途广泛,可以迭代集合、实现基于条件的循环以及创建无限循环。

基本 for 循环

传统的 for 循环具有初始化、条件和后置语句。此示例演示了从 0 计数到 4。

basic_for.go
package main

import "fmt"

func main() {
    for i := 0; i < 5; i++ {
        fmt.Println(i)
    }
}

循环将 i 初始化为 0,在 i < 5 时运行,并在每次迭代后递增 i。这是最常见的形式。

类似 while 的 for 循环

Go 的 while 循环只是一个只有条件的 for 循环。此示例展示了如何实现 while 循环的行为。

while_for.go
package main

import "fmt"

func main() {
    count := 0
    
    for count < 5 {
        fmt.Println(count)
        count++
    }
}

只要 count < 5,循环就会继续。计数器必须在循环体内部管理,类似于传统的 while 循环。

无限 for 循环

无限循环省略了所有三个语句。此示例展示了如何创建无限循环并从中跳出。

infinite_for.go
package main

import "fmt"

func main() {
    i := 0
    
    for {
        fmt.Println(i)
        i++
        
        if i > 4 {
            break
        }
    }
}

循环将无限运行,直到满足 break 条件。此模式对于服务器或长时间运行的进程很有用。

For-range 循环

range 形式迭代切片、数组、映射、字符串或通道。此示例演示了迭代切片。

range_for.go
package main

import "fmt"

func main() {
    fruits := []string{"apple", "banana", "cherry"}
    
    for index, fruit := range fruits {
        fmt.Printf("%d: %s\n", index, fruit)
    }
}

range 会为每个元素返回索引和值。如果只需要值,可以使用 _ 来省略索引。

嵌套 for 循环

For 循环可以嵌套以处理多维数据结构。此示例显示了一个乘法表。

nested_for.go
package main

import "fmt"

func main() {
    for i := 1; i <= 3; i++ {
        for j := 1; j <= 3; j++ {
            fmt.Printf("%d * %d = %d\t", i, j, i*j)
        }
        fmt.Println()
    }
}

外循环控制行,内循环处理列。外循环的每次迭代都会触发内循环的完整周期。

带 continue 的 For 循环

continue 语句会跳到下一个迭代。此示例跳过了循环中的偶数。

continue_for.go
package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i%2 == 0 {
            continue
        }
        fmt.Println(i)
    }
}

i 为偶数时,continue 会跳过打印语句。仅打印 0 到 9 之间的奇数。

带标签的 for 循环

标签允许从嵌套结构中 break 或 continue 外层循环。此示例演示了从外层循环 break。

labeled_for.go
package main

import "fmt"

func main() {
OuterLoop:
    for i := 0; i < 3; i++ {
        for j := 0; j < 3; j++ {
            fmt.Printf("i=%d, j=%d\n", i, j)
            
            if i == 1 && j == 1 {
                break OuterLoop
            }
        }
    }
}

标签 OuterLoop: 标记外层循环。当满足条件时,break 语句会退出两个循环。

来源

Go 语言规范

本教程通过不同循环场景和模式的实际示例,介绍了 Go 中的 for 关键字。

作者

我的名字是 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出所有 Golang 教程