在介紹完 go 的邏輯判斷的之後接下來要跟大家分享一下 go 迴圈的語法,這部分內容與大部分語言相同,本來筆者想這樣告訴大家,但是其實 go 只有一個for,所以接下來筆者會說明如何用一個for來完成其他語言的for、foreach、while這種迴圈判斷式。
本文同步放置於此
因為 go 的迴圈語法只有for一種所以接下來會以其他語言的for、foreach、while來解釋如何在 go 裡面完成。
所以先針對for迴圈的寫法來介紹,請大家看一下以下例子
package main
import "fmt"
func main() {
sum := 0
for i := 0; i < 10; i++ {
sum += i
}
fmt.Println(sum)
}
看上述例子其實與其他語言差異不大,簡單講就是for ; ; {}的結構for與第一個;是for迴圈的初始設定,兩個;之間是for迴圈的判斷式,;與{則是判斷是不成立時要做的工作而{}之間則是在為滿足時執行的程式。在說明完for迴圈後要介紹foreach的寫法。
在 go 沒有foreach的語法,不過還是可以做到foreach的工作,關於如何處理foreach請看下列例子
package main
import "fmt"
func main() {
numbers := []int{1,2,3,4,5,6,7,8,9}
for _, number:= range numbers {
fmt.Println("The number is:", number)
}
}
讀者可以看到這例子調用range這個語法跟_這個語法,首先先解釋_這個語法,由於在foreach之中不需要初始化所以用一個_來接他,而這個_專門拿來放不需要的東西。接下來range就是用在迭代容器中的元素,如此就可以完成foreach的語法,所以如果今天想要依序跑map裡面的元素也可以用這種方式,如下列所示
package main
import "fmt"
func main() {
numbers := map[string]int{"One":1,"Two":2,"Three":3}
for k, number:= range numbers {
fmt.Println("The ", k, " is:", number)
}
}
原來在之前slice的例子中我們忽略的元素是index,但是在map中也許會使用到,所以在這裡用k來接他,在map中k所取到的就是key,如果在slice需要index的話也可以用變數來接他,這部分就不贅述了,接下來就說明一下如何處理while。
在 go 語言中只有for迴圈沒有while迴圈那是因為for迴圈就能處理while迴圈的工作了,請看以下例子
package main
import "fmt"
func main() {
sum := 1
for sum < 1000 {
sum += 1
}
fmt.Println(sum)
}
上述例子是實作當sum加總到1000就停止的while迴圈,所以寫法與其它語言差不多,只不過是用for關鍵字,那讀者會好奇while(true)要怎麼實作呢,請看以下例子
package main
func main() {
for {
}
}
簡單說明就是for之後不帶任何判斷式即可。
這篇文章說明 go 的迴圈判斷式要如何使用,並且點出 go 語言的迴圈判斷式與其它語言不同的地方。在說明完迴圈判斷式之後要進入如何在 go 裡面寫方法了。