news 2026/4/23 14:30:34

HoRain云--Go语言range关键字使用全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HoRain云--Go语言range关键字使用全解析

🎬 HoRain云小助手:个人主页

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

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


⛳️ 推荐

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

专栏介绍

专栏名称

专栏介绍

《C语言》

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

《网络协议》

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

《docker容器精解篇》

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

《linux系列》

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

《python 系列》

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

《试题库》

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

目录

⛳️ 推荐

专栏介绍

🔍 基础用法与示例

⚠️ 重要细节与技巧

💡 常见问题解答


Go 语言中的range关键字是用于for循环的迭代器,可以遍历数组、切片、字符串、映射(map)和通道(channel),让元素遍历变得简洁清晰。

数据结构

返回的第一个值

返回的第二个值 (若适用)

备注

数组 / 切片

索引 (int)

对应索引的元素值

索引从 0 开始

字符串

字符的起始字节索引 (int)

对应的 Unicode 码点 (rune)

迭代的是 Unicode 字符,而非字节

映射 (map)

键 (key)

对应的值 (value)

迭代顺序不固定

通道 (channel)

从通道接收到的值

(无)

通常只用一个变量接收

🔍 基础用法与示例

range在遍历不同数据结构时,会返回一个或两个值。你可以使用_(空白标识符) 来忽略不需要的值。

遍历切片/数组

nums := []int{10, 20, 30} // 同时获取索引和值 for index, value := range nums { fmt.Printf("索引: %d, 值: %d\n", index, value) } // 忽略索引,只获取值 for _, value := range nums { fmt.Printf("值: %d\n", value) } // 忽略值,只获取索引 for index := range nums { fmt.Printf("索引: %d\n", index) }

遍历映射 (map)

countryCapitalMap := map[string]string{"France": "Paris", "Italy": "Rome"} // 同时获取键和值 for country, capital := range countryCapitalMap { fmt.Printf("%s 的首都是 %s\n", country, capital) } // 只获取键 for country := range countryCapitalMap { fmt.Printf("国家: %s\n", country) }

遍历字符串

str := "Go" for index, charCode := range str { fmt.Printf("字符索引: %d, Unicode 码点: %d, 字符: %c\n", index, charCode, charCode) } // 输出: // 字符索引: 0, Unicode 码点: 71, 字符: G // 字符索引: 1, Unicode 码点: 111, 字符: o

遍历通道 (channel)

ch := make(chan int, 2) ch <- 1 ch <- 2 close(ch) // 遍历通道前必须先关闭,否则会阻塞 for elem := range ch { fmt.Println(elem) // 依次输出 1, 2 }

⚠️ 重要细节与技巧

  1. 值复制与引用

    numbers := []int{1, 2, 3} for i := range numbers { numbers[i] *= 2 // 通过索引修改原始元素 } fmt.Println(numbers) // 输出: [2 4 6]
  2. 映射的遍历顺序

    Go 语言中映射的遍历顺序是不固定的(随机性)。这是设计上的刻意为之,旨在提醒开发者不要依赖映射的内部顺序。每次遍历的顺序可能都不一样。

  3. 性能考量与最佳实践

💡 常见问题解答

forfor range有什么区别?

range关键字是 Go 语言中处理集合数据的利器,理解其特性和细节能帮助你写出更高效、更安全的代码。希望这些解释和示例对你有帮助!

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

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

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

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

校园跑腿系统(源码+数据库+文档)

校园跑腿 目录 基于springboot vue校园跑腿系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue校园跑腿系统 一、前言 博主介绍&#xff1a;✌️大…

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

全网最全8个AI论文软件,自考学生轻松搞定毕业论文!

全网最全8个AI论文软件&#xff0c;自考学生轻松搞定毕业论文&#xff01; AI工具如何让论文写作不再难 在自考学习的道路上&#xff0c;毕业论文往往是最让人头疼的一关。从选题、大纲搭建到内容撰写、查重降重&#xff0c;每一个环节都可能成为阻碍前行的障碍。而随着人工智能…

作者头像 李华
网站建设 2026/4/23 8:21:14

基于springboot + vue大学生就业招聘系统(源码+数据库+文档)

大学生就业招聘 目录 基于springboot vue大学生就业招聘系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue大学生就业招聘系统 一、前言 博主介绍…

作者头像 李华
网站建设 2026/4/23 8:22:57

文献综述无从下手?这8款AI神器带你轻松突围,百考通AI全程助攻!

对于大多数本科生而言&#xff0c;论文写作中最令人头疼的环节莫过于文献综述。它远不止是简单的文献堆砌&#xff0c;而是需要梳理研究脉络、提炼核心观点、找准研究空白的系统性工程。面对海量文献无从筛选、脉络梳理混乱、格式反复出错等痛点&#xff0c;许多同学只能熬夜苦…

作者头像 李华
网站建设 2026/4/23 8:22:25

情绪宣泄平台系统|基于java + vue情绪宣泄平台系统(源码+数据库+文档)

情绪宣泄平台 目录 基于springboot vue情绪宣泄平台系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue情绪宣泄平台系统 一、前言 博主介绍&…

作者头像 李华
网站建设 2026/4/23 8:22:48

互联网大厂Java求职面试实战:微服务与AI技术全栈问答解析

互联网大厂Java求职面试实战&#xff1a;微服务与AI技术全栈问答解析 本文通过一个真实的面试对话场景&#xff0c;展现互联网大厂Java求职者在面试中的技术问答&#xff0c;涵盖Java SE 8/11/17、Spring Boot、微服务、数据库、缓存、消息队列及AI技术。故事中面试官严肃专业&…

作者头像 李华