跳到主要内容

Go For循环

在 Go 语言中,for 循环是唯一的循环结构,但它非常灵活,可以替代其他语言中的 whilefor-each 循环。本文将详细介绍 for 循环的语法、使用场景以及实际应用。

1. 基本语法

Go 中的 for 循环有三种形式:

  1. 基本形式:类似于其他语言中的 for 循环。
  2. 条件形式:类似于 while 循环。
  3. 无限循环:没有条件,需要手动退出。

1.1 基本形式

基本形式的 for 循环语法如下:

go
for 初始化语句; 条件表达式; 后置语句 {
// 循环体
}
  • 初始化语句:在循环开始前执行一次,通常用于初始化计数器。
  • 条件表达式:在每次循环开始前检查,如果为 true,则执行循环体。
  • 后置语句:在每次循环结束后执行,通常用于更新计数器。

示例

go
package main

import "fmt"

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

输出

0
1
2
3
4

1.2 条件形式

Go 中的 for 循环可以省略初始化语句和后置语句,只保留条件表达式,这样就变成了类似于 while 循环的形式。

语法

go
for 条件表达式 {
// 循环体
}

示例

go
package main

import "fmt"

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

输出

0
1
2
3
4

1.3 无限循环

如果省略所有条件,for 循环将变成一个无限循环,直到使用 break 语句退出。

语法

go
for {
// 循环体
}

示例

go
package main

import "fmt"

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

输出

0
1
2
3
4

2. for 循环的实际应用

2.1 遍历数组或切片

for 循环可以用于遍历数组或切片。

示例

go
package main

import "fmt"

func main() {
numbers := []int{1, 2, 3, 4, 5}
for i := 0; i < len(numbers); i++ {
fmt.Println(numbers[i])
}
}

输出

1
2
3
4
5

2.2 使用 range 关键字

range 关键字可以简化数组、切片、字符串、map 等数据结构的遍历。

语法

go
for 索引,:= range 集合 {
// 循环体
}

示例

go
package main

import "fmt"

func main() {
numbers := []int{1, 2, 3, 4, 5}
for index, value := range numbers {
fmt.Printf("索引: %d, 值: %d\n", index, value)
}
}

输出

索引: 0, 值: 1
索引: 1, 值: 2
索引: 2, 值: 3
索引: 3, 值: 4
索引: 4, 值: 5
提示

如果不需要索引,可以使用 _ 来忽略它:

go
for _, value := range numbers {
fmt.Println(value)
}

3. 嵌套循环

for 循环可以嵌套使用,用于处理多维数组或复杂的逻辑。

示例

go
package main

import "fmt"

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

输出

i: 0, j: 0
i: 0, j: 1
i: 0, j: 2
i: 1, j: 0
i: 1, j: 1
i: 1, j: 2
i: 2, j: 0
i: 2, j: 1
i: 2, j: 2

4. 总结

for 循环是 Go 语言中唯一的循环结构,但它非常灵活,可以替代其他语言中的 whilefor-each 循环。通过本文的学习,你应该已经掌握了 for 循环的基本语法、使用场景以及实际应用。

提示

练习

  1. 编写一个程序,使用 for 循环计算 1 到 100 的和。
  2. 使用 range 关键字遍历一个字符串,并打印每个字符及其对应的 ASCII 码。