首页/新闻资讯/正文详情

【Go语言基础【10】】循环语句:for、无限循环、for range、嵌套

发布时间:2026/11/3 9:22:13 来源:云帆数科 栏目:资讯中心
【Go语言基础【10】】循环语句:for、无限循环、for range、嵌套
文章目录零、概述一、for循环基础1. 完整格式三部分控制2. 省略格式简化写法二、无限循环三、for range遍历四、嵌套循环五、循环控制语句1. break退出循环2. continue跳过本次迭代3. goto无条件跳转谨慎使用零、概述场景推荐写法示例代码固定次数循环完整格式for i:0; in; ifor i:0; i10; i { ... }条件循环类似while省略格式for condition { ... }for x100 { x * 2; }遍历集合for rangefor idx, val : range slice { ... }多层循环中断break labelouter: for { if cond { break outer; } }跳过当前迭代continueif val%20 { continue; }注意循环变量作用域完整格式中i : 0声明的变量作用域仅限循环体内。提前声明的循环变量如var i int作用域为外层块。for range的坑遍历切片时value是元素副本修改value不影响原切片需通过索引修改。遍历Map时每次迭代顺序不确定底层哈希表特性。性能优化避免在循环中执行高耗时操作如网络请求、文件IO。大切片遍历时可使用for i : 0; i len(slice); i替代for range避免复制值。一、for循环基础1. 完整格式三部分控制for[初始化语句];[条件表达式];[后置语句]{// 循环体}初始化语句设置循环变量初始值如i : 0仅执行一次。条件表达式决定循环是否继续如i 10每次循环前判断。后置语句更新循环变量如i每次循环后执行。示例计算1-100之和sum:0fori:1;i100;i{sumi}fmt.Println(总和,sum)// 输出50502. 省略格式简化写法1省略初始化语句variint1// 提前声明循环变量for;i10;i{// 省略初始化部分fmt.Print(i, )}2省略后置语句fori:1;i10;{// 省略 i在循环体内更新fmt.Print(i, )i}3完全省略类似while循环sum:1forsum100{// 仅保留条件表达式等价于 while(sum 100)sum*2// 循环体内更新变量}fmt.Println(最终值,sum)// 输出128二、无限循环省略条件表达式即可实现无限循环需通过break、return等语句退出。语法形式for{// 无限循环// 循环体ifcondition{break// 满足条件时退出}}示例模拟重试机制attempts:0for{ifattempts3{fmt.Println(重试失败)break}fmt.Println(尝试第,attempts1,次)ifsuccess:tryOperation();success{// 假设 tryOperation 返回是否成功fmt.Println(操作成功)break}attempts}三、for range遍历for range是Go语言特有的遍历方式可迭代数组、切片、Map、字符串、通道Channel等数据结构。语法格式for[index,value]:rangeiterable{// 循环体}数组/切片index为索引value为元素值副本。Mapindex为键Keyvalue为值Value。字符串index为字节偏移量value为 Unicode 码点rune类型。示例遍历切片和Map1遍历切片nums:[]int{1,3,5,7}foridx,num:rangenums{nums[idx]num*2// 通过索引修改原切片fmt.Printf(索引 %d值 %d\n,idx,num)}fmt.Println(修改后的切片,nums)// 输出[2 6 10 14]2遍历Mapuser:map[string]int{Alice:25,Bob:30}forname,age:rangeuser{fmt.Printf(%s 的年龄是 %d\n,name,age)}// 输出顺序不固定可能为// Alice 的年龄是 25// Bob 的年龄是 303遍历字符串Unicode支持str:Go语言foridx,r:rangestr{// r 为 rune 类型代表 Unicode 字符fmt.Printf(字符 %c 位于字节位置 %d\n,r,idx)}// 输出// 字符 G 位于字节位置 0// 字符 o 位于字节位置 1// 字符 语 位于字节位置 2UTF-8编码占3字节// 字符 言 位于字节位置 5UTF-8编码占3字节四、嵌套循环在循环体内包含另一个循环适用于需要多层迭代的场景如矩阵运算、生成表格等。示例1打印九九乘法表fori:1;i9;i{forj:1;ji;j{fmt.Printf(%d×%d%-3d,j,i,i*j)// %-3d 左对齐宽度3}fmt.Println()// 每行结束换行}示例2查找素数埃拉托斯特尼筛法max:100isPrime:make([]bool,max1)//make//用于创建并初始化引用类型切片、map、通道。//它会为这些类型分配内存空间并返回一个初始化后的类型实例非 nil。fori:2;imax;i{isPrime[i]true// 初始化为素数}fori:2;i*imax;i{// 只检查到平方根ifisPrime[i]{forj:i*i;jmax;ji{// 标记非素数isPrime[j]false}}}// 输出结果fmt.Print(素数列表)fori:2;imax;i{ifisPrime[i]{fmt.Print(i, )}}五、循环控制语句1. break退出循环作用终止当前循环跳出循环体。标签用法在嵌套循环中break [标签]可退出指定标签的外层循环。示例带标签的breakouter:fori:0;i3;i{forj:0;j3;j{ifi1j1{breakouter// 退出外层循环}fmt.Printf((%d, %d) ,i,j)}}// 输出(0,0) (0,1) (0,2) (1,0)2. continue跳过本次迭代作用跳过当前迭代的剩余语句直接进入下一次迭代。示例打印奇数fori:1;i10;i{ifi%20{continue// 跳过偶数}fmt.Print(i, )// 输出1 3 5 7 9}3. goto无条件跳转谨慎使用作用跳转到指定标签Label处执行代码可能破坏代码结构需谨慎使用。示例错误处理中的快速跳转file,err:os.Open(data.txt)iferr!nil{gotoERROR// 跳转到错误处理标签}// 处理文件逻辑file.Close()returnERROR:fmt.Println(打开文件失败,err)

相关推荐

【系统设计【2】】粗略估算
【系统设计【2】】粗略估算

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:22:13

TabPFN-2.6部署指南:如何将表格AI模型集成到生产环境
TabPFN-2.6部署指南:如何将表格AI模型集成到生产环境

TabPFN-2.6部署指南:如何将表格AI模型集成到生产环境 TabPFN-2.6是一款基于Transformer的基础模型,它利用上下文学习在前向传播中解决表格预测问题。本文将为你提供一份完整的部署指南,帮助你轻松将这款强大的表格AI模型集成到生产环境中。 一… · 2026/11/3 9:22:13

eslav_PP-OCRv5_mobile_rec_onnx:终极移动端OCR文字识别解决方案
eslav_PP-OCRv5_mobile_rec_onnx:终极移动端OCR文字识别解决方案

eslav_PP-OCRv5_mobile_rec_onnx:终极移动端OCR文字识别解决方案 想要在移动设备上实现快速准确的文字识别吗?eslav_PP-OCRv5_mobile_rec_onnx为您提供了终极的移动端OCR文字识别解决方案!🚀 这个基于飞桨PaddlePaddle框架的轻量… · 2026/11/3 9:22:13

【RHCA+】dstat命令(监控系统资源)
【RHCA+】dstat命令(监控系统资源)

“ 目录:RHCA -> 12 系统监控 -> 9 dstat命令(监控系统资源) ”查看CPU、网络、磁盘等监控信息;语法格式:dstat [参数]参数作用--help查看帮助-c, --cpu只查看CPU统计信息-d, --disk只查看磁盘统计信息-m, --mem… · 2026/11/3 9:59:10

Folia 安装指南:五种路线一次装对,桌面到 NAS 全打通
Folia 安装指南:五种路线一次装对,桌面到 NAS 全打通

Folia 安装指南:五种路线一次装对,桌面到 NAS 全打通 【免费下载链接】folia-major 专注于绚丽的歌词动画效果的本地音乐/navidrome/第三方多平台在线音乐播放器 项目地址: https://gitcode.com/GitHub_Trending/fo/folia-major 先回答一道选择题… · 2026/11/3 9:59:10

拆解但不失全貌:如何在 OpenSpec 中管理复杂 Agent 需求的演进
拆解但不失全貌:如何在 OpenSpec 中管理复杂 Agent 需求的演进

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:59:10

团队内部 README:在通用项目开发中使用 OpenSpec
团队内部 README:在通用项目开发中使用 OpenSpec

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:59:10

【AI Engineering】项目学习新姿势:把知识管理、PRD 和 Spec 串起来
【AI Engineering】项目学习新姿势:把知识管理、PRD 和 Spec 串起来

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:59:10

Highcharts Gantt使用符号的自定义数据标签开发甘特图示例
Highcharts Gantt使用符号的自定义数据标签开发甘特图示例

使用符号的自定义数据标签、带头像 Font Awesome 图标标签的甘特图代码,复制就能用!完整可运行代码(带头像 图标数据标签)Highcharts.ganttChart(container, {title: {text: Highcharts Gantt Chart},subtitle: {text: With cus… · 2026/11/3 9:58:09

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码