Golang循环语句怎么用_Golang for循环三种写法详解

Go语言仅用for实现所有循环:①三段式(如for i:=0; i

Go语言的循环语句只用一个for关键字,通过不同的写法来实现各种循环需求。它没有独立的whiledo-while循环,所有功能都由for承担。

经典三段式for循环

这是最常用的写法,和C语言类似,包含初始化、条件判断和迭代操作三个部分,用分号;隔开。

  • 初始化语句:在循环开始前执行一次,通常用于声明和初始化计数器变量,比如 i := 0
  • 条件表达式:在每次循环开始前进行判断。如果为true,则执行循环体;如果为false,则退出循环。
  • 后续操作:在每次循环体执行完毕后执行,通常用于更新计数器,比如 i++i--

示例代码会输出数字0到4:

for i := 0; i     fmt.Println(i)
}

条件循环(等价于while)

Go语言没有while关键字。要实现“当条件满足时就重复执行”的逻辑,只需省略三段式中的初始化和后续操作,只保留条件表达式。

  • 将变量的初始化放在for语句之前。
  • 在循环体内完成变量的更新,否则可能造成死循环。

这个例子与上面的三段式效果相同,但结构更清晰,适合那些循环次数不固定、依赖外部状态的情况:

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

无限循环与range遍历

当需要让循环一直运行,直到遇到特定的退出条件时,可以使用无限循环。同时,for range是Go中遍历集合数据的核心语法。

  • 无限循环:省略for后的所有内容,写成for {}。这种循环会一直执行,必须在循环体内使用break语句或return来退出,常用于服务器主循环或后台任务。
  • range遍历:使用for ... range结构可以方便地遍历数组、切片、字符串、map和channel。它会自动返回索引(或键)和值。
    • 遍历切片:for index, value := range slice
    • 遍历map:for key, value := range map
    • 如果不需要索引或键,可以用下划线_忽略,例如for _, value := range slice

一个简单的无限循环示例:

for {
    fmt.Println("Hello")
    // 需要有某种条件来break
    if someCondition {
        break
    }
}

基本上就这些。掌握这三种主要用法,就能应对Go语言中的大部分循环场景了。