Go 語言的循環語句
在 Go 語言中減少了循環語句的關鍵字,僅有一個 for 關鍵字。但是并沒有減少其功能,而且它更是兼容了其它語言中的while關鍵字的用法,甚至更強大。
1. for 循環語句
1.1 普通用法
在 Go 語言中,for 循環之后一樣可以跟三個語句,單次表達式;條件表達式;末尾循環體,但是它不需要使用()
來包裹這三個表達式,寫法上更加的簡潔。同時它也和其它語言一樣,可以任意省略這三個表達式。
代碼示例:
package main
import "fmt"
func main() {
for a := 0; a < 10; a++ {
fmt.Println(a)
}
}
省略單次表達式代碼示例:
package main
import "fmt"
func main() {
a := 0
for ; a < 10; a++ {//表達式可以省略,但是;不能省略
fmt.Println(a)
}
}
執行結果:
1.2 代替 while 的用法
在其它大部分語言中 for 循環中省略單次表達式和末尾循環體其實就和其它語句中的 while 用法一致了。所以在 Go 語言中,直接使用省去單次表達式和末尾循環體的 for 循環語句來代替 while 的用法,為了簡便代碼書寫,Go 語言中 for 循環語句在省去單次表達式和末尾循環體時,可以不寫分號。
代碼示例:
package main
import "fmt"
func main() {
a := 0
for a < 10 { //和其它語言中的while(a<10)一致
fmt.Println(a)
a++
}
}
執行結果:
2. for 語言中的break 和 continue
在我們的生產環境中,經常需要用到死循環的場景。所以在 Go 語言中新增了一個 for 關鍵字死循環的用法,讓程序員不用寫無聊的 for(;;){}
和do{} while(1)
。同時可以使用 break 和 continue 來控制循環。
Tips:break 和 continue 的邏輯和語法類似,故本文只介紹break。
2.1 break跳出單層死循環
在你想要結束一個死循環的時候,只需要執行一個 break 語句即可。
代碼示例:
package main
import "fmt"
func main() {
a := 0
for { //死循環的寫法就是省略 單次表達式;條件表達式;末尾循環體
fmt.Println(a)
a++
if a >= 10 {
break //跳出死循環
}
}
}
執行結果:
2.2 break跳出多層死循環
在其它語言中,你很難去控制跳出循環的層數,在 Go 語言中提供了一種break LOOP
的寫法,可以使循環跳出到 LOOP 所在的位置。
代碼示例:
package main
import "fmt"
func main() {
a := 0
LOOP:
for {
for {
fmt.Println(a)
a++
if a >= 10 {
break LOOP //跳出循環至LOOP所在的層級
}
}
}
}
執行結果:
3. 小結
本文主要介紹了 for 關鍵字在 Go 語言的循環中的用法:
- for 之后的語句不需要使用
()
包裹; break+LOOP
的形式可以一次性跳出多層循環;- for 可以和其它語言中的 while 一樣使用;
- for{…} 的形式是一個死循環。