Golang循环语句详解

刚开始学习Golang,对循环语句的使用有些困惑。想请教几个问题:

  1. Golang中有哪些类型的循环语句?和C语言有什么区别?
  2. for循环的三种形式(单条件、三表达式、range)分别适用于什么场景?
  3. 无限循环在Golang中如何实现?有什么注意事项?
  4. 在使用range遍历时,如何同时获取索引和值?
  5. Golang没有while循环,那应该如何实现类似功能?

希望有经验的开发者能帮忙解答,最好能给出一些实用的代码示例。

2 回复

Golang循环语句主要有for循环,支持三种形式:

  1. 基础for循环:for i := 0; i < n; i++ { ... }
  2. 类似whilefor condition { ... }
  3. 无限循环:for { ... }
    可使用break跳出循环,continue跳过当前迭代。
    whiledo-while,均用for实现。

更多关于Golang循环语句详解的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go语言中,循环主要通过 for 语句实现,没有 whiledo-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,可以覆盖所有循环场景。

回到顶部