新闻中心

Golang如何使用for循环与range遍历_Golang循环遍历语法操作方法汇总

2025-10-31
浏览次数:
返回列表
Go语言中for循环和range遍历是处理数组、切片、字符串、map和通道的核心方式,所有循环均通过for实现。基础for循环包含初始化、条件判断和递增三部分,如for i := 0; i

golang如何使用for循环与range遍历_golang循环遍历语法操作方法汇总

Go语言中for循环和range遍历是处理数组、切片、字符串、map和通道等数据结构的核心方式。 它没有while或do-while语法,所有循环都通过for实现。下面详细介绍常见的遍历方法和使用技巧。

基础for循环用法

Go的for循环语法简洁,支持初始化、条件判断和递增三部分:

for i := 0; i < 5; i++ {
    fmt.Println(i)
}

这与C语言类似,但括号可省略。也可以只保留条件部分,模拟while:

i := 0
for i < 5 {
    fmt.Println(i)
    i++
}

甚至可以写成无限循环,配合break退出:

for {
    if someCondition {
        break
    }
}

使用range遍历集合类型

range是Go中专用于迭代的数据结构关键字,能自动返回索引和值(或键和值),常用于以下场景:

遍历数组或切片:

slice := []int{10, 20, 30}
for index, value := range slice {
    fmt.Printf("索引: %d, 值: %d\n", index, value)
}

如果不需要索引,可用下划线_忽略:

for _, value := range slice {
    fmt.Println(value)
}

遍历字符串:

str := "你好 Go"
for i, r := range str {
    fmt.Printf("位置: %d, 字符: %c\n", i, r)
}

注意:Go中range对字符串返回的是rune(Unicode字符)及其字节位置,不是单个字节。

NameGPT NameGPT

免费的名称生成器,AI驱动在线生成企业名称及Logo

NameGPT 119 查看详情 NameGPT

遍历map:

m := map[string]int{"a": 1, "b": 2}
for key, value := range m {
    fmt.Printf("键: %s, 值: %d\n", key, value)
}

map遍历顺序不固定,每次运行可能不同。

遍历channel:

ch := make(chan int, 3)
ch <- 1
ch <- 2
close(ch)
<p>for v := range ch {
fmt.Println(v)
}</p>

当channel关闭后,range会自动结束循环。

常见注意事项与技巧

使用range时需注意变量复用问题。例如:

var result []*int
nums := []int{1, 2, 3}
for _, v := range nums {
    result = append(result, &v) // 错误:v是同一个变量地址
}

上面代码中v在每次迭代中被复用,导致所有指针指向同一地址。正确做法是创建副本:

for _, v := range nums {
    num := v
    result = append(result, &num)
}

另外,range在开始时会对集合做快照(除map外),因此循环中修改原切片长度不会影响迭代次数。

基本上就这些。掌握forrange的不同组合,就能高效处理Go中的各类遍历需求。

以上就是Golang如何使用for循环与range遍历_Golang循环遍历语法操作方法汇总的详细内容,更多请关注其它相关文章!


# 复用  # 电商网站推广公司哪家好  # 客车网站建设  # 碧波庭仪器营销推广  # 推广方案模板免费网站  # 揭阳矩阵式推广营销  # seo网络推广网上生意  # 文字翻译网站建设  # 百度对网站优化在打击么  # 鹿泉区网站建设推广  # 潜山网站建设免费咨询  # 就能  # 的是  # go  # 迭代  # 自定义  # 操作方法  # 如何使用  # 死锁  # 数据结构  # 遍历  # 字节  # go语言  # c语言  # golang 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: J*a里如何实现线程安全的懒加载单例_懒加载单例实现方法解析  c++如何使用std::memory_order控制原子操作顺序_c++ C++11内存模型详解  特斯拉自动驾驶房车计划曝光 原型车将于2027年亮相  如何在CSS中使用visited与link控制链接颜色_visited link伪类配合  WordPress插件开发:正确注册卸载钩子与避免常见陷阱  Python字典中优雅地迭代剩余元素的方法  漫蛙漫画登录站点 漫蛙2正版漫画快速访问  Win10怎么设置静态IP地址 Win10手动配置IP地址步骤【指南】  漫蛙2正版漫画站 漫蛙2网页版快速访问入口  C++如何连接MySQL数据库_C++使用Connector/C++操作MySQL数据库教程  将HTML Canvas内容转换为可上传的图像文件(File对象)  CSS图片焦点样式实现教程:理解与应用tabindex属性  Mac终端命令大全_Mac常用Terminal指令速查  Golang指针如何与map组合使用_Golang map指针组合实践  不会效仿卡普空!《铁拳》制作人澄清:不采取赛事付费|直播|  如何使用CaptainHook和Composer管理Git钩子_在提交前自动运行代码检查的Composer配置  Excel组合图表怎么做 Excel创建柱状图与折线组合图教程【图表】  Yandex官方入口网址 Yandex俄罗斯搜索引擎最新在线地址  Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】  Golang如何实现Web文件静态资源服务器_Golang静态资源服务器开发与实践  如何有效阻止外部脚本意外修改内联样式的高度属性  C++的std::forward_list怎么用_C++ STL中单向链表容器的特点与应用  TikTok搜索结果不显示如何解决 TikTok搜索刷新优化方法  深入理解J*a编译器的兼容性选项:从-source到--release  文本文档写html代码怎么运行_文本文档html代码运行步骤【教程】  CSS布局中意外空白:解决padding-top导致的顶部间距问题  React Router 嵌套组件中 URL 重定向问题的解决方案  微信语音通话掉线如何解决 微信语音通话稳定优化方法  抖音极速版最新版本 抖音极速版官方下载地址  抓大鹅解压小游戏 抓大鹅摸鱼解压入口  Composer的 "licenses" 命令如何帮助你遵守开源协议_检查项目依赖的许可证合规性  wps文字怎么插入目录并自动更新_wps文字如何插入目录并自动更新方法  sublime如何只显示或隐藏特定类型文件_sublime侧边栏文件过滤  探索高级语言到原生C/C++的转译:挑战与内存管理策略  Mudbox图层蒙版怎么用_Mudbox图层蒙版数字雕刻应用技巧  在Go语言中利用后缀数组处理多字符串:实现高效文本匹配与自动补全  解决Tabulator日期时间排序问题的专业指南  在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明  Angular中单选按钮的正确使用与常见陷阱解析  Win11蓝牙耳机断连怎么解决 Win11蓝牙设置重新配对与驱动更新【技巧】  汽水音乐车机版横屏版7.1 汽水音乐车机版横屏版下载入口  《马克思佩恩3》早期版本曝光 UI设计曾多次调整!  QQ邮箱网页版登录入口 QQ邮箱官方在线使用平台  小米汽车11月交付量突破40000台!雷军:将继续努力  J*aScript map 迭代中检测空数组元素的有效方法  天眼查企业查询官网入口 天眼查官方网页版查询  如何在Promise链中有效终止错误处理后的执行  夸克浏览器图书入口 夸克手机浏览器阅读入口  腾讯QQ邮箱登录入口_QQ邮箱官方网站使用地址  vivo手机互传视频怎么操作_vivo手机互传视频详细传输方法 

搜索