Go 語言的循環(huán)語句
在 Go 語言中減少了循環(huán)語句的關鍵字,僅有一個?for?關鍵字。但是并沒有減少其功能,而且它更是兼容了其它語言中的while關鍵字的用法,甚至更強大。
1. for 循環(huán)語句
1.1 普通用法
在 Go 語言中,for 循環(huán)之后一樣可以跟三個語句,單次表達式;條件表達式;末尾循環(huán)體,但是它不需要使用()
來包裹這三個表達式,寫法上更加的簡潔。同時它也和其它語言一樣,可以任意省略這三個表達式。
代碼示例:
- 1?
package main
- 2
- 3?
import "fmt"
- 4
- 5?
func main() {
- 6? ? ? ? ?
for a := 0; a < 10; a++ {
- 7? ? ? ? ? ? ? ? ?
fmt.Println(a)
- 8? ? ? ? ?
}
- 9?
}
省略單次表達式代碼示例:
- 1?
package main
- 2
- 3?
import "fmt"
- 4
- 5?
func main() {
- 6? ? ? ? ?
a := 0
- 7? ? ? ? ?
for ; a < 10; a++ {//表達式可以省略,但是;不能省略
- 8? ? ? ? ? ? ? ? ?
fmt.Println(a)
- 9? ? ? ? ?
}
- 10?
}
執(zhí)行結果:

1.2 代替 while 的用法
在其它大部分語言中?for?循環(huán)中省略單次表達式和末尾循環(huán)體其實就和其它語句中的?while?用法一致了。所以在 Go 語言中,直接使用省去單次表達式和末尾循環(huán)體的?for?循環(huán)語句來代替?while?的用法,為了簡便代碼書寫,Go 語言中 for 循環(huán)語句在省去單次表達式和末尾循環(huán)體時,可以不寫分號。
代碼示例:
- 1?
package main
- 2
- 3?
import "fmt"
- 4
- 5?
func main() {
- 6? ? ? ? ?
a := 0
- 7? ? ? ? ?
for a < 10 { //和其它語言中的while(a<10)一致
- 8? ? ? ? ? ? ? ? ? ?
fmt.Println(a)
- 9? ? ? ? ? ? ? ? ? ?
a++
- 10? ? ? ?
}
- 11
}
執(zhí)行結果:

2. for 語言中的break 和 continue
在我們的生產環(huán)境中,經(jīng)常需要用到死循環(huán)的場景。所以在 Go 語言中新增了一個?for?關鍵字死循環(huán)的用法,讓程序員不用寫無聊的?for(;;){}
和do{} while(1)
。同時可以使用?break?和?continue?來控制循環(huán)。
Tips:break?和?continue?的邏輯和語法類似,故本文只介紹break。
2.1 break跳出單層死循環(huán)
在你想要結束一個死循環(huán)的時候,只需要執(zhí)行一個?break?語句即可。
代碼示例:
- 1?
package main
- 2
- 3?
import "fmt"
- 4
- 5?
func main() {
- 6? ? ? ? ?
a := 0
- 7? ? ? ? ?
for { //死循環(huán)的寫法就是省略 單次表達式;條件表達式;末尾循環(huán)體
- 8? ? ? ? ? ? ? ? ?
fmt.Println(a)
- 9? ? ? ? ? ? ? ? ?
a++
- 10? ? ? ? ? ? ? ?
if a >= 10 {
- 11? ? ? ? ? ? ? ? ? ? ? ?
break //跳出死循環(huán)
- 12? ? ? ? ? ? ? ?
}
- 13? ? ? ? ?
}
- 14?
}
執(zhí)行結果:

2.2 break跳出多層死循環(huán)
在其它語言中,你很難去控制跳出循環(huán)的層數(shù),在 Go 語言中提供了一種break LOOP
的寫法,可以使循環(huán)跳出到 LOOP 所在的位置。
代碼示例:
- 1?
package main
- 2
- 3?
import "fmt"
- 4
- 5?
func main() {
- 6? ? ? ? ?
a := 0
- 7?
LOOP:
- 8? ? ? ? ?
for {
- 9? ? ? ? ? ? ? ?
for {
- 10? ? ? ? ? ? ? ? ? ? ?
fmt.Println(a)
- 11? ? ? ? ? ? ? ? ? ? ??
a++
- 12? ? ? ? ? ? ? ? ? ? ?
if a >= 10 {
- 13? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
break LOOP //跳出循環(huán)至LOOP所在的層級
- 14? ? ? ? ? ? ? ? ? ? ?
}
- 15? ? ? ? ? ? ?
}
- 16? ? ? ?
}
- 17?
}
執(zhí)行結果:

3. 小結
本文主要介紹了?for?關鍵字在 Go 語言的循環(huán)中的用法:
- for?之后的語句不需要使用
()
包裹; break+LOOP
的形式可以一次性跳出多層循環(huán);- for?可以和其它語言中的 while 一樣使用;
- for{…}?的形式是一個死循環(huán)。
文章來源于網(wǎng)絡,侵刪!