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

devtools/2024/10/22 13:35:34/

第8天:控制结构 - 循环

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

1. for 循环的基本概念

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

1.1 for 循环的基本结构

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

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

1.2 示例代码

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

package mainimport "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 循环

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

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

2.3 无限循环

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

package mainimport "fmt"func main() {i := 1for {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 示例代码

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

package mainimport "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语句用于立即退出当前循环。

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

4.2 continue 语句

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

package mainimport "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循环计算一个给定数字的阶乘。

package mainimport "fmt"func main() {var n intfmt.Print("请输入一个非负整数: ")fmt.Scan(&n)factorial := 1for i := 1; i <= n; i++ {factorial *= i}fmt.Printf("%d 的阶乘是: %d\n", n, factorial)
}

5.2 斐波那契数列

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

package mainimport "fmt"func main() {var n intfmt.Print("请输入斐波那契数列的项数: ")fmt.Scan(&n)a, b := 0, 1fmt.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程序中应用循环结构,为后续的学习奠定良好的基础。

附加资源

  • Go语言官方文档 - 控制结构
  • Go语言学习资源与书籍

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


http://www.ppmy.cn/devtools/127848.html

相关文章

2024自动化测试面试真题(附答案)!

一、编程语法题 1 、 python 有哪些数据类型 python 数据类型有很多&#xff0c;基本数据类型有整型&#xff08;数字&#xff09;、字符串、元组、列表、字典和布尔类型等 2 、怎么将两个字典合并 调用字典的 update 方法&#xff0c;合并 2 个字典。 3 、 json.l python 如…

Java之继承抽象类用法实例(三十一)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

基于深度学习的AI生成式人脸图像鉴别原理

随着深度学习的发展&#xff0c;生成式AI模型&#xff08;如GANs&#xff09;能够生成高质量的逼真人脸图像。这些生成式模型在娱乐、艺术等领域发挥着重要作用&#xff0c;但同时也带来了对虚假信息、深伪图像&#xff08;deepfake&#xff09;的担忧。因此&#xff0c;如何鉴…

react18中如何实现同步的setState来实现所见即所得的效果

在react项目中&#xff0c;实现添加列表项&#xff0c;最后一项自动显示在可视区域范围&#xff01;&#xff01; 实现效果 代码实现 import { useState, useRef } from "react"; import { flushSync } from "react-dom"; function FlushSyncRef() {con…

怎么快速定位bug?怎么编写测试用例?

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 作为一名测试人员如果连常见的系统问题都不知道如何分析&#xff0c;频繁将前端人员问题指派给后端人员&#xff0c;后端人员问题指派给前端人员&#xff0c;那么在…

【Linux系列】在 Linux 中使用 `watch` 命令监控 Docker 容器状态

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

图纸管理软件哪个好用?三品图纸管理系统怎么样?

在现代企业与机构中&#xff0c;图纸管理是一项至关重要的任务。传统纸质图纸容易丢失、破损&#xff0c;并且难以进行高效的版本控制和协作。随着数字化技术的不断进步&#xff0c;图纸管理软件已成为企业提高管理效率、确保数据安全的关键工具。然而&#xff0c;市场上的图纸…

(六) 进程控制

(六) 进程控制 ps(1) 命令可以帮助我们分析本章中的一些示例&#xff0c;所以简单介绍一些参数的组合方式&#xff0c;更详细的信息请查阅 man 手册。 ps axf 主要用于查看当前系统中进程的 PID 以及执行终端(tty)和状态等信息&#xff0c;更重要的是它能显示出进程的父子关系…