当前位置: 首页 > ops >正文

循环语句:for、range -《Go语言实战指南》

Go 语言没有 while 和 do...while,所有循环控制统一通过 for 实现。搭配 range 关键字,可以高效遍历数组、切片、字符串、map 和 channel。


一、基本 for 语句

1. 经典三段式写法(类似 C)
for 初始化语句; 条件表达式; 递增语句 {// 循环体
}
示例:
for i := 0; i < 5; i++ {fmt.Println(i)
}

二、for 等价 while 的写法

当只需要判断条件:

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

等价于其他语言中的 while 循环。


三、无限循环

for {fmt.Println("无限循环")// 可通过 break 或 return 退出
}

四、使用 break 和 continue

for i := 0; i < 10; i++ {if i == 3 {continue // 跳过当前这轮}if i == 7 {break // 提前退出循环}fmt.Println(i)
}

五、使用 range 遍历结构

1. 遍历数组 / 切片
nums := []int{10, 20, 30}
for index, value := range nums {fmt.Printf("下标:%d 值:%d\n", index, value)
}

可忽略变量:

for _, val := range nums {fmt.Println(val)
}

2. 遍历字符串(按 Unicode 字符)
s := "hello 世界"
for i, r := range s {fmt.Printf("索引:%d 字符:%c\n", i, r)
}

注:Go 中 range 字符串会按 rune(字符) 处理,不会出现 UTF-8 半个字符乱码问题。


3. 遍历 map
m := map[string]int{"A": 1, "B": 2}
for k, v := range m {fmt.Printf("键:%s 值:%d\n", k, v)
}

遍历 map 的顺序是随机的,每次运行顺序可能不同。


4. 遍历 channel
ch := make(chan int, 3)
ch <- 1
ch <- 2
ch <- 3
close(ch)for v := range ch {fmt.Println(v)
}

六、小结

用法示例
经典计数循环for i := 0; i < n; i++
类似 while 循环for 条件
无限循环for {}
遍历数组、map、字符串for k, v := range ...
控制语句breakcontinue

http://www.xdnf.cn/news/5487.html

相关文章:

  • 矩阵键盘模块
  • Spark(25)在shell中运行Spark程序
  • mapbox进阶,使用mapbox-plugins插件加载饼状图
  • 《AI大模型应知应会100篇》第60篇:Pinecone 与 Milvus,向量数据库在大模型应用中的作用
  • iOS safari和android chrome开启网页调试与检查器的方法
  • 我开源了一个免费在线工具!UIED Tools
  • 【Python 变量类型】
  • 【技巧】离线安装docker镜像的方法
  • MIT XV6 - 1.6 Lab: Xv6 and Unix utilities -uptime
  • AI 时代 UI 设计的未来范式
  • 设计模式之中介者模式
  • 华为行业认证是什么?如何考取华为行业认证?
  • Wpf学习片段
  • Python3(31) CGI 编程
  • 自动驾驶技术栈——DoIP通信协议
  • 鸿蒙 UIAbility组件与UI的数据同步和窗口关闭
  • 【数据结构】——队列
  • 学习threejs,使用Physijs物理引擎,加载各种几何体网格对象
  • 2025 盘古石杯初赛 wp
  • Lambda表达式能用在哪些场景?
  • 学习黑客5 分钟深入浅出理解Windows Editions
  • MyBatis源码解读1(MyBatis回顾)
  • 微调重排序模型:Reranking从入门到实践
  • GPU Gems1-Effective Water Simulation from Physical Models
  • RHCSA Linux系统 Web页面 论坛 网盘的搭建
  • 沈燕谈艺:把现代科学基因融入古典笔墨中
  • OrangePi Zero 3学习笔记(Android篇)6 - hid-ft260
  • Redis设计与实现——单机Redis实现
  • 光线传感器BH1750
  • springboot3学习