news 2026/5/1 1:13:09

HoRain云--Go语言循环语句全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HoRain云--Go语言循环语句全解析

🎬 HoRain云小助手:个人主页

🔥 个人专栏: 《Linux 系列教程》《c语言教程》

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

Go 语言循环语句详解

1. 基本 for 循环

2. 类似 while 的循环

3. 无限循环

4. 使用 range 的循环

遍历切片

遍历映射

遍历通道

5. 循环控制语句

break 语句

continue 语句

带标签的 break 和 continue

6. 循环嵌套

7. 注意事项


Go 语言循环语句详解

Go 语言中,循环语句主要通过for关键字实现。与其他语言不同,Go 没有专门的whiledo-while语句,而是使用for的灵活语法来覆盖各种循环场景。

1. 基本 for 循环

语法:

for 初始化语句; 条件表达式; 后置语句 { // 循环体 }

示例:计算 1 到 10 的累加和

package main import "fmt" func main() { sum := 0 for i := 1; i <= 10; i++ { sum += i } fmt.Println("Sum:", sum) // 输出: Sum: 55 }

2. 类似 while 的循环

通过省略初始化和后置语句,for循环可以模拟while循环:

for 条件表达式 { // 循环体 }

示例:

package main import "fmt" func main() { count := 0 for count < 5 { fmt.Println("Count:", count) count++ } }

3. 无限循环

使用for不带任何条件创建无限循环:

for { // 循环体 }

示例:游戏主循环

package main import ( "fmt" "time" ) func main() { i := 0 for { fmt.Println("当前值:", i) i++ if i >= 3 { break // 当 i>=3 时退出 } time.Sleep(16 * time.Millisecond) // 模拟 60FPS } }

4. 使用 range 的循环

range关键字用于遍历数组、切片、映射或通道:

for index, value := range 集合 { // 循环体 }

遍历切片

package main import "fmt" func main() { nums := []int{1, 2, 3} sumOfSquares := 0 for _, num := range nums { // 忽略索引,只取值 square := num * num sumOfSquares += square } fmt.Println("平方和:", sumOfSquares) // 输出: 平方和: 14 }

遍历映射

package main import "fmt" func main() { scores := map[string]int{ "Alice": 90, "Bob": 85, "Charlie": 70, } for name, score := range scores { fmt.Printf("姓名:%s,分数:%d\n", name, score) } }

遍历通道

package main import "fmt" func main() { queue := make(chan string, 2) queue <- "one" queue <- "two" close(queue) for item := range queue { fmt.Println(item) } }

5. 循环控制语句

break 语句

break用于立即退出当前循环:

for i := 1; i <= 10; i++ { if i > 5 { break // 当 i > 5 时终止循环 } fmt.Printf("%d ", i) } // 输出: 1 2 3 4 5

continue 语句

continue用于跳过当前迭代,进入下一次:

for i := 1; i <= 10; i++ { if i%2 == 0 { continue // 跳过偶数 } fmt.Printf("%d ", i) } // 输出: 1 3 5 7 9

带标签的 break 和 continue

用于控制多层循环:

outer: for i := 0; i < 3; i++ { for j := 0; j < 4; j++ { if i == 1 && j == 2 { break outer // 直接退出整个双层循环 } fmt.Printf("i=%d, j=%d\n", i, j) } }

6. 循环嵌套

Go 语言通过嵌套for实现多层循环:

// 打印乘法表 for i := 1; i < 10; i++ { for j := 1; j <= i; j++ { fmt.Printf("%dx%d=%d ", j, i, i*j) } fmt.Println("") }

7. 注意事项

  1. for头部定义的变量仅在for语句范围内可见
  2. for语句头部的三个部分(初始化、条件、后置)都是可选的
  3. 使用下划线_可以忽略不需要的索引或值
  4. 避免在循环内重复分配内存,特别是在性能敏感场景
  5. 遍历二维切片时,修改元素需要通过索引方式:matrix[i][j] = newval

Go 语言的循环结构简洁而强大,掌握这些循环语句的用法,可以帮助你编写高效、易读的 Go 程序。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 7:06:13

人生意义 = 当下体验?

将“人生意义”与“当下体验”用等号相连&#xff0c;既是古老的东方智慧&#xff0c;也是现代心理学和神经科学关注的核心。 “当下体验”是构成人生意义最核心、最不可替代的“材料”&#xff0c;但人生意义的完整构建&#xff0c;还需要一个能将当下体验进行“编织、解读与超…

作者头像 李华
网站建设 2026/4/30 15:41:19

金融论坛服务方案:高保密性与高端接待的实施标准

金融论坛服务方案&#xff1a;高保密性与高端接待的实施标准在金融领域&#xff0c;高端论坛不仅是思想碰撞的平台&#xff0c;更是行业风向标与信任建立的桥梁。一场成功的金融论坛&#xff0c;其核心价值往往超越议题本身&#xff0c;深度嵌入于严谨的会议服务流程之中&#…

作者头像 李华
网站建设 2026/4/21 21:36:24

10个互动环节,让你的会议告别沉默与跑题

北京天德腾润公关策划有限公司&#xff1a;以结构化互动技术重塑高效会议体验行业痛点分析当前会议服务领域正面临两大核心挑战&#xff1a;参与度不足导致的“沉默效应”与议程失焦引发的“跑题循环”。传统会议模式过度依赖主讲人单向输出&#xff0c;缺乏有效的技术手段激发…

作者头像 李华
网站建设 2026/4/15 21:44:57

nodejs基于农产品网上商城农商信息交流平台小程序

目录项目背景技术架构核心功能创新点应用价值项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作项目背景 农产品网上商城与农商信息交流平台小程序结合了电子商务与农业信息共享需求&#xff0c;旨在解决传统…

作者头像 李华
网站建设 2026/4/21 0:42:53

【含文档+PPT+源码】基于大数据的交通流量预测系统

项目介绍 本课程演示的是一款基于大数据的交通流量预测系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 带你从零开始部署运行本套系统 该项目附带的源码…

作者头像 李华
网站建设 2026/4/23 3:37:09

Linux_10:编码

1.视频为什么要编码&#xff1f;在我们做音视频产品的时候&#xff0c;经常会把音视频数据进行网络传输&#xff0c;而此时音视频数据就需要进行 编码(所谓编码就是指压缩)。因为在网络传输的时候&#xff0c;网络带宽有限&#xff0c;若此时网络传输的时候还用 原始数据进行传…

作者头像 李华