news 2026/5/3 12:16:26

Go语言range怎么用_Go语言range遍历教程【入门】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Go语言range怎么用_Go语言range遍历教程【入门】

v是副本而非引用,修改v不影响原切片;改原切片须用索引s[i];结构体切片中v.Field=x无效;map遍历顺序随机,需显式排序key;并发读写map会panic;string遍历中i是字节偏移而非字符序号。range 遍历切片时改不了原值?因为 v 是副本直接说结论:v 是每次迭代复制出来的值,不是引用。你写 v = v * 2,只改了那个临时变量,原切片纹丝不动。要修改原切片元素,必须用索引:写成 for i := range s { s[i] = s[i] * 2 } 或 for i, v := range s { s[i] = v * 2 }结构体切片尤其危险——v.Field = x 不会生效,除非 v 字段本身是指针或 slice如果只是读取、计算、打印,for _, v := range s 完全没问题;但凡涉及“写”,就别碰 v 赋值range 遍历 map 顺序每次都不同,这不是 bugGo 明确规定 range 遍历 map 的起始哈希桶是随机的,所以键的输出顺序不固定——这是防你依赖顺序写的代码侥幸跑通。测试里偶尔顺序一致?别信,生产环境大概率变需要稳定顺序(比如日志输出、JSON 序列化),得先收集 key:keys := make([]string, 0, len(m)); for k := range m { keys = append(keys, k) },再 sort.Strings(keys),最后 for _, k := range keys { fmt.Println(k, m[k]) }并发读写 map 时用 range 会 panic:fatal error: concurrent map iteration and map write,必须加锁或换 sync.Maprange 遍历字符串返回的是 rune 起始字节位置,不是字符序号range 遍历 string 时,i 是该 rune 在字节序列里的起始偏移(不是第几个字符),c 才是解码后的 Unicode 字符。中文、emoji 等多字节字符会让 i 跳跃:比如 "你好" 中第二个字的 i 是 3,不是 1想统计字符个数?用 utf8.RuneCountInString(s),别靠 range 循环计数器如果只是查 ASCII 字符(如 'a')、做字节级操作,用 for i := 0; i 更快,绕过 UTF-8 解码开销range 读 channel 会一直阻塞,直到 closefor v := range ch 这句看似简单,实则隐含阻塞语义:它会卡住,直到有数据可读;通道关闭后自动退出循环。 WisPaper 复旦大学研发的AI学术搜索工具,5分钟内筛选1000篇论文

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

从SYSTICK到ADC:给STM32F1/F0系列MCU的三种随机数生成方案实测与避坑指南

STM32F1/F0随机数生成实战:三种方案深度评测与工程化选择 在嵌入式开发中,随机数生成是个看似简单却暗藏玄机的基础功能。当我们需要为STM32F1/F0这类中低端MCU设计设备序列号、加密密钥或游戏逻辑时,如何在没有硬件随机数发生器(RNG)的情况下…

作者头像 李华
网站建设 2026/5/3 12:15:14

STM32F407的ADC+DMA+TIMER2组合拳:如何实现一个实时波形显示的示波器核心?

STM32F407示波器实战:ADCDMATIMER2高速数据采集系统设计 1. 嵌入式示波器的核心架构设计 在嵌入式系统开发中,实时数据采集与显示一直是极具挑战性的技术难题。STM32F407凭借其丰富的外设资源和强大的处理能力,成为实现低成本高性能示波器的理…

作者头像 李华
网站建设 2026/4/18 3:13:17

C语言关键字static的使用详解

初探“static”,一点儿C语言记忆碎片 程序运行的时候,内存就那么几块地方,放代码,放数据,还有没初始化的数据,所有人都觉得这些东西很重要,程序才能跑起来,代码放代码段,…

作者头像 李华
网站建设 2026/4/16 4:33:05

angular-http-auth与token认证的完美结合:终极集成指南

angular-http-auth与token认证的完美结合:终极集成指南 【免费下载链接】angular-http-auth 项目地址: https://gitcode.com/gh_mirrors/an/angular-http-auth angular-http-auth是一个专为AngularJS设计的HTTP认证拦截器模块,它能够智能处理401…

作者头像 李华