15分钟学Go 第8天:控制结构 - 循环

第8天:控制结构 - 循环

在Go语言中,循环是一种基本的控制结构,用于重复执行一段代码。今天我们将深入了解Go语言中的for循环,包括它的各种用法、语法结构、以及如何在实践中有效地应用循环。

1. for 循环的基本概念

for循环是Go语言中唯一的循环结构,功能强大且灵活。它可以用于执行代码块多次,直到满足特定条件为止。

1.1 for 循环的基本结构

for循环的基本语法结构如下:

go 复制代码
for initialization; condition; post {
    // 循环体代码
}
  • initialization: 初始化语句,在循环开始前执行一次。
  • condition : 循环条件,只有当该条件为true时,循环才会继续执行。
  • post: 每次循环结束后执行的语句,通常用于更新计数器。

1.2 示例代码

下面是一个使用for循环打印数字1到10的简单示例。

go 复制代码
package main

import "fmt"

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

1.3 代码执行流程图

Yes No 开始 初始化 i=1 判断 i <= 10 输出 i 更新 i=i+1 结束

2. for 循环的其他用法

Go语言的for循环不仅限于一种形式,以下是几种常见的用法。

2.1 经典的for 循环

上面的示例已经展示了经典的for循环。除了这种形式外,Go语言还有一些变种。

2.2 只使用条件的for 循环

可以省略初始化和后缀语句,仅使用条件,形成无限循环。

go 复制代码
package main

import "fmt"

func main() {
    i := 1
    for i <= 10 {
        fmt.Println(i)
        i++
    }
}

2.3 无限循环

如果只写for而没有任何条件,就形成了一个无限循环。

go 复制代码
package main

import "fmt"

func main() {
    i := 1
    for {
        if i > 10 {
            break // 退出循环
        }
        fmt.Println(i)
        i++
    }
}

2.4 代码执行流程图

No Yes 开始 初始化 i=1 判断 i > 10 输出 i 更新 i=i+1 结束

3. 嵌套循环

程序中可以将一个for循环嵌套在另一个for循环内部。嵌套循环可以用来处理多维数据结构。

3.1 示例代码

以下示例展示了如何使用嵌套循环打印乘法表。

go 复制代码
package main

import "fmt"

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

3.2 代码执行流程图

Yes Yes No No 开始 初始化 i=1 判断 i <= 9 初始化 j=1 判断 j <= 9 输出 i, j 的乘积 更新 j=j+1 更新 i=i+1 结束

4. 使用continuebreak

在循环中,我们可以使用continuebreak语句来控制循环的执行。

4.1 break 语句

break语句用于立即退出当前循环。

go 复制代码
package main

import "fmt"

func main() {
    for i := 1; i <= 10; i++ {
        if i == 5 {
            break // 当 i 等于 5 时退出循环
        }
        fmt.Println(i)
    }
}

4.2 continue 语句

continue语句用于跳过当前迭代中的剩余代码,并开始下一次循环。

go 复制代码
package main

import "fmt"

func main() {
    for i := 1; i <= 10; i++ {
        if i%2 == 0 {
            continue // 跳过偶数
        }
        fmt.Println(i) // 仅打印奇数
    }
}

4.3 代码执行流程图(break

Yes Yes No No 开始 初始化 i=1 判断 i <= 10 判断 i == 5 退出循环 输出 i 更新 i=i+1 结束

4.4 代码执行流程图(continue

Yes Yes No No 开始 初始化 i=1 判断 i <= 10 判断 i%2 == 0 跳过当前循环 更新 i=i+1 输出 i 更新 i=i+1 结束

5. 实践案例

5.1 计算阶乘

通过for循环计算一个给定数字的阶乘。

go 复制代码
package main

import "fmt"

func main() {
    var n int
    fmt.Print("请输入一个非负整数: ")
    fmt.Scan(&n)

    factorial := 1
    for i := 1; i <= n; i++ {
        factorial *= i
    }

    fmt.Printf("%d 的阶乘是: %d\n", n, factorial)
}

5.2 斐波那契数列

使用循环生成斐波那契数列的前N项。

go 复制代码
package main

import "fmt"

func main() {
    var n int
    fmt.Print("请输入斐波那契数列的项数: ")
    fmt.Scan(&n)

    a, b := 0, 1
    fmt.Print("斐波那契数列: ")
    for i := 0; i < n; i++ {
        fmt.Print(a, " ")
        a, b = b, a+b // 计算下一个数
    }
    fmt.Println()
}

5.3 代码执行流程图(阶乘)

Yes No 开始 用户输入 n 初始化 factorial=1 初始化 i=1 判断 i <= n 计算 factorial *= i 更新 i=i+1 输出 factorial 结束

5.4 代码执行流程图(斐波那契数列)

Yes No 开始 用户输入 n 初始化 a=0, b=1 初始化 i=0 判断 i < n 输出 a a, b = b, a+b 更新 i=i+1 结束

6. 注意事项

  • 使用for循环时要注意设置合适的循环条件,避免出现无限循环。
  • 在嵌套循环中,确保内层循环的条件独立管理,以免影响外层循环的结果。
  • breakcontinue在使用时要合理规划,以免影响程序的流畅性。

7. 练习题

  1. 编写一个程序,计算1到N的平方和。
  2. 使用循环找出100以内的所有素数。
  3. 编写程序打印一个矩形的星号图案,行和列的数量由用户输入。
  4. 求斐波那契数列的和,直到某个数达到N。

8. 总结

在本章中,我们详细探讨了Go语言中的for循环,展示了其基本用法、常见变种以及如何灵活使用continuebreak控制循环的执行。通过代码示例和流程图,帮助大家更好地理解循环的工作原理。掌握这些内容后,你将能够熟练地在Go程序中应用循环结构,为后续的学习奠定良好的基础。

附加资源


怎么样今天的内容还满意吗?再次感谢观众老爷的观看,关注下方GZH,回复666,送您价值199的AI大礼包。最后,祝您早日实现财务自由,还请给个赞,谢谢!

相关推荐
网络安全Jack2 小时前
什么是网络安全等级保护?
网络·安全·web安全
Yhame.2 小时前
深入理解 Java 中的 ArrayList 和 List:泛型与动态数组
java·开发语言
Dovir多多2 小时前
Python数据处理——re库与pydantic的使用总结与实战,处理采集到的思科ASA防火墙设备信息
网络·python·计算机网络·安全·网络安全·数据分析
VVVVWeiYee4 小时前
项目2路由交换
运维·服务器·网络·网络协议·信息与通信
mazo_command4 小时前
【MATLAB课设五子棋教程】(附源码)
开发语言·matlab
IT猿手4 小时前
多目标应用(一):多目标麋鹿优化算法(MOEHO)求解10个工程应用,提供完整MATLAB代码
开发语言·人工智能·算法·机器学习·matlab
青春男大4 小时前
java栈--数据结构
java·开发语言·数据结构·学习·eclipse
88号技师4 小时前
几款性能优秀的差分进化算法DE(SaDE、JADE,SHADE,LSHADE、LSHADE_SPACMA、LSHADE_EpSin)-附Matlab免费代码
开发语言·人工智能·算法·matlab·优化算法
Zer0_on4 小时前
数据结构栈和队列
c语言·开发语言·数据结构
一只小bit4 小时前
数据结构之栈,队列,树
c语言·开发语言·数据结构·c++