首页 > 编程笔记 > Go语言笔记 阅读:13

Golang for循环的用法(非常详细,附带实例)

在编写程序时经常会遇到一些具有规律性的重复操作,在满足条件的情况下重复执行某些语句,就是循环结构。

Go 语言中的循环结构只支持 for 循环。for 循环语句也称为计次循环语句,一般用于循环次数已知的情况。

for 循环语句的基本语法格式如下:
for 初始化表达式; 条件表达式; 更新表达式 {
    语句
}
参数说明如下:
for 循环语句执行的过程是:执行初始化语句,判断循环条件,如果循环条件的结果为 true,则执行一次循环体,否则直接退出循环,通过更新表达式改变变量的值,至此完成一次循环;接下来进行下一次循环,直到循环条件的结果为 false,才结束循环。

for 循环语句的执行流程如下图所示:


图 1 for循环语句的执行流程

例如,使用 for 语句输出 1~5 等 5 个数字,代码如下:
package main

import "fmt"

func main() {
    for i := 1; i <= 5; i+++ {
        fmt.Println(i)
    }
}
运行结果如下:

1
2
3
4
5

Go语言for循环的多种用法

在实际应用中,除了基本使用格式,for 循环还有几种使用格式,分别如下:

1) 初始化语句写在for循环之外

例如,将上述示例按这种格式进行修改,代码如下:
package main

import "fmt"

func main() {
    i := 1
    for ; i <= 5; i+++ {
        fmt.Println(i)
    }
}
在上述代码中,在 for 循环前定义初始化语句,for 循环中没有初始化语句,此时变量 i 的作用域比在 for 循环中定义时要大。

注意,使用这种格式的 for 循环语句,初始化语句之后的分号必须要写。

2) 将更新表达式放在循环体中

例如,将上述示例修改成这种格式,代码如下:
package main

import "fmt"

func main() {
    for i := 1; i <= 5; {
        fmt.Println(i)
        i++
    }
}
在上述代码中,变量 i 也是在 for 循环中定义并初始化,同时也设置了循环条件,但是变量 i 的更新表达式是在循环体中设置的。这种方式可以更加灵活地控制循环次数。

3) 只设置循环条件

例如,将上述示例按这种格式进行修改,代码如下:
package main

import "fmt"

func main() {
    var i int = 1
    for i <= 5 {
        fmt.Println(i)
        i++
    }
}
在上述代码中,在 for 关键字后只设置了循环条件,在 for 循环之外定义和初始化了变量 i,在循环体中设置了变量 i 的更新表达式。这种方式可以使 for 循环和循环之外的代码实现关联。

4) 不设置任何条件

这种格式适用于无限循环的情况,程序将无休止地循环下去。跳出循环可以使用 break 关键字。示例代码如下:
package main

import "fmt"

func main() {
    var i int = 1
   for {
       fmt.Println(i)
       if i >= 5 {
           break
       }
       i++
   }
}
虽然 Go语言只支持 for 循环语句,但是使用 for 语句可以实现多种循环方式,在实际开发中可以根据需要灵活使用。

【实例】计算 100 以内所有偶数的和。使用 for 循环语句计算 100 以内所有偶数的和,并在页面中输出计算后的结果。代码如下:
package main

import "fmt"

func main() {
    sum := 0  // 保存和的变量
    for i := 2; i <= 100; i += 2 {
        sum = sum + i  // 计算 100 以内所有偶数之和
    }
    fmt.Printf("100 以内所有偶数的和为:%d", sum)  // 输出计算结果
}
运行结果如下:

100以内所有偶数的和为:2550

Go语言for循环嵌套

循环嵌套就是在一个循环语句的循环体中包含其他的循环语句。最常用的是在 for 循环中嵌套 for 循环。

在 for 循环中嵌套 for 循环,代码如下:
package main

import "fmt"

func main() {
    for i := 1; i <= 5; i+++ {
        fmt.Print("第", i, "次循环:")
        for j := 1; j <= 5; j+++ {
            fmt.Print(j, " ")
        }
        fmt.Print("\n")
    }
}
运行结果如下:

第1次循环:1 2 3 4 5
第2次循环:1 2 3 4 5
第3次循环:1 2 3 4 5
第4次循环:1 2 3 4 5
第5次循环:1 2 3 4 5

相关文章