Go 语言循环语句:for 循环完全入门
文章目录Go 语言循环语句for 循环完全入门一、前置准备二、for 循环核心语法3种常用场景重中之重1. 标准 for 循环最常用指定循环次数语法格式必须严格遵循示例代码1打印1\-10的数字循环10次运行结果示例代码2计算1\-100的总和循环累加运行结果2. 省略初始/终止/步长的 for 循环灵活用法场景1省略初始表达式循环变量已在外部定义运行结果场景2省略步长表达式步长为1或在循环体内更新变量运行结果场景3省略初始和步长表达式仅保留终止条件运行结果示例3. 无限循环无终止条件需手动终止语法格式两种写法推荐第一种示例代码猜数字游戏无限循环猜对终止运行结果示例三、for 循环控制语句break、continue1. break终止整个循环彻底退出示例代码找到1\-10中的第一个偶数找到后终止循环运行结果2. continue跳过当前循环执行下一次循环示例代码打印1\-10中的奇数跳过偶数运行结果四、嵌套 for 循环进阶用法语法格式简化示例代码1打印5行5列的星号正方形运行结果示例代码2打印九九乘法表经典嵌套循环案例运行结果五、综合实战案例结合之前知识点完整代码运行结果示例六、新手常见错误避坑指南七、本篇总结Go 语言循环语句for 循环完全入门大家好上一篇博客我们掌握了if else条件语句让程序实现了“分分支判断”的逻辑。本篇我们继续学习流程控制的另一个核心——for 循环它能让程序“重复执行一段代码”解决“重复操作”的问题比如批量打印、遍历数据、重复计算等。和之前一样全程搭配可直接运行的代码示例零基础也能轻松上手学完就能写出有重复逻辑的 Go 程序彻底摆脱“逐行写重复代码”的麻烦重点说明Go 语言中没有 while 循环和 do-while 循环只有 for 循环但它的用法非常灵活能替代另外两种循环的所有场景。一、前置准备继续使用我们的GoStudy项目新建文件夹forloop创建main\.go文件所有测试代码均在此文件中编写运行。基础代码结构复制即可packagemainimportfmtfuncmain(){// 所有for循环测试代码写在这里}核心说明循环的本质是“重复执行一段代码直到满足终止条件”。比如生活中“每天早上起床→刷牙→洗脸”重复到不需要再做为止程序中“打印10次‘Hello Go’”重复10次后终止这就是循环的作用。二、for 循环核心语法3种常用场景重中之重Go 语言的 for 循环语法简洁、灵活主要分为「标准for循环」「省略初始/终止条件的for循环」「无限循环」三种场景我们逐一讲解重点掌握语法细节和使用场景避开新手常见坑。1. 标准 for 循环最常用指定循环次数场景明确知道循环的“开始条件、终止条件、步长”比如“循环10次”“从1循环到100每次加1”这是开发中最常用的循环方式。语法格式必须严格遵循for初始表达式;终止条件;步长表达式{// 循环体需要重复执行的代码}各部分说明通俗好记初始表达式循环开始前执行一次用于初始化循环变量比如定义一个计数器i : 0可选可省略。终止条件每次循环开始前判断结果必须是bool类型true/false如果为true执行循环体如果为false终止循环核心。步长表达式每次循环体执行完毕后执行用于更新循环变量比如i\\每次加1i\-\-每次减1可选可省略。三个表达式之间用;分隔左大括号\{必须和 for 语句在同一行和 if else 语法要求一致否则编译报错。循环体即使只有一行代码大括号也不能省略遵循 Go 代码规范。示例代码1打印1-10的数字循环10次packagemainimportfmtfuncmain(){// 标准for循环打印1-10// 初始表达式i : 1从1开始// 终止条件i 10循环到10为止// 步长表达式i每次加1fori:1;i10;i{fmt.Printf(%d ,i)}fmt.Println(\n循环结束)}运行结果1 2 3 4 5 6 7 8 9 10 循环结束示例代码2计算1-100的总和循环累加packagemainimportfmtfuncmain(){varsumint// 用于存储总和// 从1循环到100每次加1累加求和fori:1;i100;i{sumi// 等价于 sum sum i}fmt.Printf(1-100的总和是%d\n,sum)}运行结果1-100的总和是50502. 省略初始/终止/步长的 for 循环灵活用法Go 语言允许省略 for 循环的任意一个或多个表达式初始、终止、步长根据场景灵活使用本质还是标准 for 循环的简化版。场景1省略初始表达式循环变量已在外部定义packagemainimportfmtfuncmain(){// 循环变量i在外部定义省略初始表达式i:1for;i5;i{fmt.Printf(循环第%d次Hello Go\n,i)}}运行结果循环第1次Hello Go 循环第2次Hello Go 循环第3次Hello Go 循环第4次Hello Go 循环第5次Hello Go场景2省略步长表达式步长为1或在循环体内更新变量如果步长是1可省略步长表达式在循环体内用i\\更新变量不推荐不如直接写步长可读性更强。packagemainimportfmtfuncmain(){fori:1;i3;{// 省略步长表达式fmt.Println(i)i// 在循环体内更新循环变量等价于步长i}}运行结果1 2 3场景3省略初始和步长表达式仅保留终止条件等价于其他语言的while循环适合“不知道循环次数只知道终止条件”的场景比如用户输入指定值后终止。packagemainimportfmtfuncmain(){varnumintfmt.Print(请输入一个数字输入0终止循环)fmt.Scan(num)// 仅保留终止条件num ! 0等价于while(num ! 0)fornum!0{fmt.Printf(你输入的数字是%d\n,num)fmt.Print(请输入一个数字输入0终止循环)fmt.Scan(num)}fmt.Println(循环终止)}运行结果示例请输入一个数字输入0终止循环5 你输入的数字是5 请输入一个数字输入0终止循环8 你输入的数字是8 请输入一个数字输入0终止循环0 循环终止3. 无限循环无终止条件需手动终止场景不知道循环次数也没有明确的终止条件需要在循环体内通过break语句手动终止循环比如猜数字游戏、服务器监听等。语法格式两种写法推荐第一种// 写法1省略所有表达式最简洁推荐for{// 循环体必须有break语句否则会一直循环死循环}// 写法2终止条件写true等价于写法1不推荐fortrue{// 循环体}关键注意点无限循环必须在循环体内添加break语句后续讲解否则程序会进入“死循环”一直执行无法终止只能强制关闭程序。示例代码猜数字游戏无限循环猜对终止packagemainimportfmtfuncmain(){varguessinttarget:7// 目标数字fmt.Println(猜数字游戏开始目标数字1-10)// 无限循环猜对为止for{fmt.Print(请输入你猜的数字)fmt.Scan(guess)// 用if else判断是否猜对ifguesstarget{fmt.Println(恭喜你猜对啦)break// 猜对了手动终止循环}elseifguesstarget{fmt.Println(猜小了再试试)}else{fmt.Println(猜大了再试试)}}fmt.Println(游戏结束)}运行结果示例猜数字游戏开始目标数字1-10 请输入你猜的数字3 猜小了再试试 请输入你猜的数字8 猜大了再试试 请输入你猜的数字7 恭喜你猜对啦 游戏结束小贴士死循环是新手常踩的坑如果不小心写了无限循环且没有 break可在 VS Code 中按Ctrl\C强制终止程序。三、for 循环控制语句break、continue在循环过程中我们可能需要“提前终止循环”“跳过当前循环执行下一次循环”这就需要用到break和continue两个控制语句搭配 for 循环使用灵活控制循环流程。1. break终止整个循环彻底退出作用当满足某个条件时立即终止整个 for 循环不管后续还有多少次循环都不再执行直接跳出循环体执行循环后面的代码。示例代码找到1-10中的第一个偶数找到后终止循环packagemainimportfmtfuncmain(){// 找到1-10中的第一个偶数找到后终止循环fori:1;i10;i{ifi%20{// 判断是否为偶数fmt.Printf(找到第一个偶数%d\n,i)break// 终止整个循环后续循环不再执行}fmt.Printf(当前数字%d不是偶数\n,i)}fmt.Println(循环结束)}运行结果当前数字1不是偶数 找到第一个偶数2 循环结束2. continue跳过当前循环执行下一次循环作用当满足某个条件时跳过当前循环的剩余代码直接执行下一次循环不会终止整个循环只是跳过当前这一次。示例代码打印1-10中的奇数跳过偶数packagemainimportfmtfuncmain(){// 打印1-10中的奇数跳过偶数fori:1;i10;i{ifi%20{// 判断是否为偶数continue// 跳过当前循环不执行下面的打印语句}fmt.Printf(%d ,i)// 只打印奇数}fmt.Println(\n循环结束)}运行结果1 3 5 7 9 循环结束重点区分break是“终止整个循环”continue是“跳过当前循环继续下一次”不要混淆四、嵌套 for 循环进阶用法场景在一个 for 循环外层循环的循环体内再嵌套另一个 for 循环内层循环用于处理“双层重复”的逻辑比如打印三角形、九九乘法表等。语法格式简化for外层循环条件{// 外层循环体for内层循环条件{// 内层循环体外层循环执行一次内层循环执行完整一轮}}核心逻辑外层循环执行一次内层循环会执行完整的一轮直到内层终止条件满足比如外层循环循环3次内层循环循环2次总共会执行 3×26 次内层循环体。关键注意点嵌套层级建议不超过 2 层否则代码可读性变差容易出错。外层循环和内层循环的变量名不要重复比如外层用i内层用j避免变量冲突。break和continue只作用于当前所在的循环内层的 break 只终止内层循环不影响外层循环。示例代码1打印5行5列的星号正方形packagemainimportfmtfuncmain(){// 外层循环控制行数5行fori:1;i5;i{// 内层循环控制每行的星号数量5列forj:1;j5;j{fmt.Print(* )}fmt.Println()// 每行结束后换行}}运行结果* * * * * * * * * * * * * * * * * * * * * * * * *示例代码2打印九九乘法表经典嵌套循环案例packagemainimportfmtfuncmain(){fmt.Println(九九乘法表)// 外层循环控制行数1-9行fori:1;i9;i{// 内层循环控制每行的列数1-i列比如第3行有3个算式forj:1;ji;j{fmt.Printf(%d×%d%d\t,j,i,j*i)// \t 是制表符让格式对齐}fmt.Println()// 每行结束后换行}}运行结果九九乘法表 1×11 1×22 2×24 1×33 2×36 3×39 1×44 2×48 3×412 4×416 1×55 2×510 3×515 4×520 5×525 1×66 2×612 3×618 4×624 5×630 6×636 1×77 2×714 3×721 4×728 5×735 6×742 7×749 1×88 2×816 3×824 4×832 5×840 6×848 7×856 8×864 1×99 2×918 3×927 4×936 5×945 6×954 7×963 8×972 9×981五、综合实战案例结合之前知识点结合「控制台输入」「if else」「for 循环」「运算符」实现一个“批量录入学生成绩统计及格人数、不及格人数和平均分”的完整程序巩固本篇所有知识点。需求接收用户输入的学生人数循环录入每个学生的成绩0-100分统计及格人数≥60分、不及格人数lt;60分计算所有学生的平均分输出统计结果。完整代码packagemainimportfmtfuncmain(){varstudentNumintvarscore,sum,passCount,failCountintvaraveragefloat64// 1. 接收学生人数fmt.Print(请输入学生人数)fmt.Scan(studentNum)// 2. 循环录入每个学生的成绩循环studentNum次fori:1;istudentNum;i{fmt.Printf(请输入第%d个学生的成绩0-100,i)fmt.Scan(score)// 3. 累加总分sumscore// 4. 统计及格、不及格人数ifscore60{passCount}else{failCount}}// 5. 计算平均分避免整数取整转换为浮点型ifstudentNum0{// 避免除以0防止用户输入0个学生averagefloat64(sum)/float64(studentNum)}// 6. 输出统计结果fmt.Println(------------------- 成绩统计 -------------------)fmt.Printf(学生总人数%d 人\n,studentNum)fmt.Printf(及格人数%d 人\n,passCount)fmt.Printf(不及格人数%d 人\n,failCount)fmt.Printf(所有学生平均分%.1f 分\n,average)}运行结果示例请输入学生人数5 请输入第1个学生的成绩0-10085 请输入第2个学生的成绩0-10058 请输入第3个学生的成绩0-10092 请输入第4个学生的成绩0-10076 请输入第5个学生的成绩0-10060 ------------------- 成绩统计 ------------------- 学生总人数5 人 及格人数4 人 不及格人数1 人 所有学生平均分74.2 分六、新手常见错误避坑指南大括号位置错误for 语句后面的左大括号\{没有和 for 在同一行导致编译报错和 if else 一样Go 语法强制要求。错误示例for i : 1; i \lt; 5; i\\ \{ // 错误\{ 不能换行 fmt\.Println\(i\) \}终止条件错误导致死循环比如步长写反循环从1到10步长写i\-\-或者终止条件永远为true且没有 break导致程序一直循环。循环变量未更新省略步长表达式且没有在循环体内更新循环变量导致循环变量一直不变终止条件永远满足进入死循环。break/continue 作用域混淆嵌套循环中误以为内层的 break 能终止外层循环实际上只能终止内层。循环变量名重复外层循环和内层循环用同一个变量名比如都用i导致变量值被覆盖循环逻辑出错。除以0错误计算平均分时没有判断学生人数是否为0直接用 sum 除以 studentNum导致编译报错比如用户输入0个学生。忘记加分号标准 for 循环的三个表达式之间忘记写;导致语法错误比如for i : 1 i \lt; 10 i\\。七、本篇总结核心作用for 循环用于实现“重复执行一段代码”解决重复操作的问题Go 语言中没有 while、do-while 循环所有循环场景都用 for 实现。三种常用结构标准 for 循环for 初始; 终止; 步长 \{\}明确循环次数最常用省略表达式的 for 循环可省略初始、终止、步长中的任意一个灵活适配不同场景无限循环for \{\}需用 break 手动终止适合不确定循环次数的场景。循环控制语句break终止整个循环continue跳过当前循环不要混淆。嵌套循环外层循环执行一次内层循环执行一轮适合双层重复逻辑如九九乘法表嵌套不超过2层。实战技巧结合输入、if else、运算符实现“输入→循环处理→统计输出”的完整逻辑注意避免死循环、变量冲突等问题。本篇的 for 循环是 Go 语言流程控制的核心掌握后就能处理大部分重复执行的场景。注文档部分内容可能由 AI 生成