news 2026/5/1 1:42:10

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/11 4:22:44

在线考试|基于java + vue在线考试系统(源码+数据库+文档)

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

作者头像 李华
网站建设 2026/5/1 6:25:16

springboot养老院管理系统

目录 系统概述核心功能技术特点应用价值 开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 系统概述 SpringBoot养老院管理系统是一款基于SpringBoot框架开发的智能化管理平台&#xff0c;旨在优化养老机构的日常运营&#xff0…

作者头像 李华
网站建设 2026/5/1 6:26:15

电流传感器型号从数据库查询并排序输出到网页的方法

最近有个电流传感器网站要做&#xff0c;其中就涉及到产品型号输出排序问题要实现&#xff0c;比如说&#xff0c;一个霍尔电流传感器产品有N多个型号&#xff0c;像这样AN1V 50 PB301 AN1V 100 PB301 AN1V 150 PB301 AN1V 200 PB301 AN1V 250 PB301 AN1V 300 PB301和AN1V 50 P…

作者头像 李华
网站建设 2026/5/1 6:50:24

OpenNana提示词图库:你的AI绘画灵感加速器

在AI绘画创作的世界里&#xff0c;一个绝佳的提示词往往能决定作品的成败。然而&#xff0c;寻找或构思出精准、富有创意的提示词并非易事。为此&#xff0c;OpenNana提示词图库 应运而生——一个专为AI绘画爱好者、设计师与内容创作者打造的灵感库与效率工具。 核心功能与特色…

作者头像 李华
网站建设 2026/5/1 5:48:02

java定做springboot+文具商城系统-vue

目录系统架构设计核心功能模块技术实现要点系统特色功能部署方案开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统架构设计 SpringBoot作为后端框架提供RESTful API&#xff0c;Vue.js作为前端框架构建用户界面。数据库采用…

作者头像 李华