
在golang中,for循环是唯一的循环结构,但它非常灵活,可以实现多种迭代方式。Go没有while或do-while语法,所有循环都通过for关键字完成。
1. 基本的for循环(类似c语言)
这是最常见的形式,包含初始化、条件判断和迭代操作:
for i := 0; i < 5; i++ { fmt.Println(i) }
这段代码会输出0到4。和C语言类似,但Go要求括号()不必要,花括号{}必须存在。
2. 类似while的循环
省略初始化和递增部分,只保留条件:
立即学习“go语言免费学习笔记(深入)”;
i := 0 for i < 5 { fmt.Println(i) i++ }
这种写法相当于其他语言中的while循环。
3. 无限循环
省略所有条件,创建一个持续运行的循环:
for { fmt.Println("无限执行") // 别忘了加break或return,否则会一直运行 break } </font></p>常用于事件监听、后台任务等场景。</p><H3>4. 遍历数组、切片、字符串、映射和通道(range)</H3><p>使用<code>range</code>关键字可以方便地迭代集合类型:</p><ul><li><strong>遍历切片或数组:</strong></li><font face="Courier New"><pre class="brush:php;toolbar:false;"> nums := []int{1, 2, 3} for index, value := range nums { fmt.Printf("索引: %d, 值: %dn", index, value) }
str := "Go" for i, ch := range str { fmt.Printf("位置%d的字符是%cn", i, ch) }
m := map[string]int{"a": 1, "b": 2} for key, value := range m { fmt.Printf("键: %s, 值: %dn", key, value) }
ch := make(chan int, 2) ch <- 1 ch <- 2 close(ch) for v := range ch { fmt.Println(v) }
注意:如果不需要某个返回值,可以用下划线_忽略。例如只想要值:for _, value := range slice。
基本上就这些。Go的for循环设计简洁,用一个关键字覆盖了各种迭代需求。


