如何在Golang中使用循环_for循环、range遍历切片和Map


Go语言循环仅用for实现,支持类C风格(for init; condition; post)和range遍历;示例for i := 0; i

Go语言中循环主要靠for语句实现,没有whiledo-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 {},需配合breakreturn退出。

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

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.