Golang循环语句详解
刚开始学习Golang,对循环语句的使用有些困惑。想请教几个问题:
- Golang中有哪些类型的循环语句?和C语言有什么区别?
- for循环的三种形式(单条件、三表达式、range)分别适用于什么场景?
- 无限循环在Golang中如何实现?有什么注意事项?
- 在使用range遍历时,如何同时获取索引和值?
- Golang没有while循环,那应该如何实现类似功能?
希望有经验的开发者能帮忙解答,最好能给出一些实用的代码示例。
2 回复
Golang循环语句主要有for循环,支持三种形式:
- 基础
for循环:for i := 0; i < n; i++ { ... } - 类似
while:for condition { ... } - 无限循环:
for { ... }
可使用break跳出循环,continue跳过当前迭代。
无while或do-while,均用for实现。
更多关于Golang循环语句详解的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Go语言中,循环主要通过 for 语句实现,没有 while 或 do-while 关键字。以下是常见的循环结构及示例:
1. 基本 for 循环
语法:
for 初始化; 条件; 后置操作 {
// 循环体
}
示例:
for i := 0; i < 5; i++ {
fmt.Println(i) // 输出 0 到 4
}
2. 类似 while 的循环
省略初始化和后置操作,仅保留条件:
count := 5
for count > 0 {
fmt.Println(count)
count--
}
3. 无限循环
省略所有条件,需用 break 退出:
for {
fmt.Println("无限循环")
if condition {
break
}
}
4. for-range 循环
用于遍历数组、切片、字符串、映射或通道:
- 数组/切片:
nums := []int{1, 2, 3} for index, value := range nums { fmt.Printf("索引:%d 值:%d\n", index, value) } - 字符串:
str := "Go" for i, ch := range str { fmt.Printf("索引:%d 字符:%c\n", i, ch) } - 映射:
m := map[string]int{"a": 1, "b": 2} for key, value := range m { fmt.Printf("键:%s 值:%d\n", key, value) }
5. 循环控制语句
break:立即退出循环。continue:跳过当前迭代,进入下一次。- 标签配合
break/continue(用于嵌套循环):outer: for i := 0; i < 3; i++ { for j := 0; j < 3; j++ { if i*j == 4 { break outer // 跳出外层循环 } } }
注意事项:
- Go 没有
while,用for实现同等逻辑。 for-range遍历映射时顺序随机。- 避免在循环内修改迭代变量(如切片长度),可能导致意外行为。
通过灵活使用 for,可以覆盖所有循环场景。

