Go语言循环仅用for实现,支持类C风格(for init; condition; post)和range遍历;示例for i := 0; iGo语言中循环主要靠
for语句实现,没有while或do-while,但通过灵活的for结构和range关键字,可以高效遍历切片、map、数组、字符串甚至通道。基础for循环:类C风格
Go的
for语法简洁,只有for init; condition; post一种形式(分号不可省略),且不带括号:
- init:可声明变量,作用域仅限于该for块
- condition:每次迭代前判断,为
false则退出- post:每次循环体执行后运行(如
i++)示例:打印0到4
for i := 0; i < 5; i++ { fmt.Println(i) }也可省略部分表达式,模拟
while逻辑:i := 0 for i < 5 { fmt.Println(i) i++ }甚至写成无限循环:
for {},需配合break或return退出。range遍历切片(slice)和数组
range是Go专为遍历设计的关键字,返回索引和元素值。遍历切片时,它会复制底层数组的引用,不会影响原数据。基本用法(获取索引和值):
nums := []int{10, 20, 30} for i, v := range nums { fmt.Printf("索引:%d, 值:%d\n", i, v) } // 输出: // 索引:0, 值:10 // 索引:1, 值:20 // 索引:2, 值:30
若只需索引,用下划线忽略值:
for i := range nums { fmt.Println("索引:", i) }若只需值,忽略索引:
for _, v := range nums { fmt.Println("值:", v) }⚠️ 注意:
v是元素副本,修改v不会改变原切片;要修改原切片,必须通过nums[i] = 新值。range遍历Map
遍历map时,
range返回键和值,顺序不保证(Go运行时随机化哈希遍历顺序,避免依赖固定顺序)。m := map[string]int{"a": 1, "b": 2, "c": 3} for k, v := range m { fmt.Printf("键:%s, 值:%d\n", k, v) }同样支持只取键或只取值:
for k := range m→ 只遍历键for _, v := range m→ 只遍历值(注意:map值遍历无序,且不反映插入顺序)如果需要按key排序输出,需先提取key到切片,排序后再遍历:
keys := make([]string, 0, len(m)) for k := range m { keys = append(keys, k) } sort.Strings(keys) // 需导入 "sort" for _, k := range keys { fmt.Printf("%s: %d\n", k, m[k]) }range遍历字符串和通道
range也支持字符串——它按rune(Unicode码点)而非字节遍历,适合处理中文等多字节字符:s := "Go好" for i, r := range s { fmt.Printf("位置%d: %c (U+%X)\n", i, r, r) } // 输出(i是字节偏移,r是rune): // 位置0: G (U+47) // 位置1: o (U+6F) // 位置2: 好 (U+597D)对通道(channel),
range会持续接收直到通道关闭:ch := make(chan int, 3) ch <- 1 ch <- 2 ch <- 3 close(ch) for v := range ch { fmt.Println(v) // 依次输出1、2、3 }未关闭的通道上使用
range会导致死锁,务必确保关闭或用select+ok模式安全接收。
# go
# golang
# go语言
# app
# 字节
# 作用域
# for
# while
# select
# break
# 字符串
# 循环
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
Windows10如何查看蓝屏日志_Win10使用事件查看器分析Dump文件
Win11怎么设置桌面图标间距_Windows11注册表IconSpacing修改
Windows 11如何开启文件夹加密(EFS)_Windows 11文件属性中加密内容以保护数据
海外搜索引擎推广效果怎么样,怎么分析效果!
如何在Golang中实现服务熔断与限流_Golang微服务容错与流控方法
如何在Golang中编写端到端测试_Golang E2E测试流程示例
php修改数据怎么改富文本_update更新html内容注意事项【说明】
如何使用Golang优化模块引入路径_Golanggo mod tidy清理与优化方法
mac怎么退出id_MAC退出iCloud账号与Apple ID切换【指南】
mac本地php环境如何开启curl_curl扩展启用与测试步骤详解【汇总】
如何在Golang中引入测试模块_Golang测试包导入与使用实践
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
如何在Golang中写入XML文件_生成符合规范的XML数据
LINUX如何删除用户和用户组_Linux userdel和groupdel命令用法【系统管理】
如何使用Golang template生成文本模板_动态生成HTML或文本
Win11怎样彻底卸载自带应用_Win11彻底卸载自带应用方法【步骤】
Windows Defender扫描失败怎么办_安全模块损坏修复方式
Python并发安全问题_资源竞争说明【指导】
如何在 Pandas 中按元素交集合并两列字符串
c++ std::future和std::promise c++线程间通信【教程】
如何在 Go 中判断变量是否为函数类型
Win10怎样卸载自带Edge_Win10卸载Edge浏览器步骤【教程】
PythonPandas数据分析项目教程_时间序列透视表应用
Win11文件扩展名怎么显示_Win11查看文件后缀名设置【基础】
如何关闭Win10自动更新更新_Win10系统自动更新双重关闭技巧
Win10系统怎么查看显卡温度_Win10任务管理器GPU温度
c++ unordered_map怎么用 c++哈希表用法【教程】
Win11怎么调整屏幕亮度_Windows 11调节显示器亮度护眼设置【步骤】
Win11 explorer.exe频繁崩溃_修复Win11资源管理器无限重启【步骤】
php485支持哪些操作系统_php485跨系统支持情况介绍【解答】
Flask 表单数据通过 SMTP 发送邮件的完整实现教程
Win11如何更改用户账户文件夹名称 Win11修改C:Users用户名【终极教程】
c# 如何用c#实现一个支持优先级的任务队列
Windows10如何更改桌面图标间距_Win10注册表WindowMetrics修改
如何在Golang中捕获结构体方法错误_Golang方法返回error处理实践
如何测试您的网站全球打开速度-网站海外测速工
Win11怎么设置麦克风权限_允许应用访问Win11麦克风【详解】
如何使用Golang实现微服务状态监控_Golang服务运行状态采集方法
c++中explicit(bool)的用法 c++条件性explicit【C++20】
Win11视频默认播放器怎么改_Win11关联第三方播放器【步骤】
如何使用Golang sort排序切片_Golang sort排序方法示例
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
php怎么捕获异常_trycatch结构处理运行时错误的技巧【方法】
如何在Golang中操作嵌套切片指针_Golang多维slice修改
Win11怎么设置快速访问主页_Windows11资源管理器文件夹选项
Win11怎么开启窗口对齐助手_Windows11系统多任务处理设置
Windows10电脑怎么设置文件权限_Win10安全选项卡所有者修改
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
c# 在ASP.NET Core中管理和取消后台任务
Windows10系统怎么查看运行时间_Win10 CPU正常运行时间查询
2026-01-03
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。