在介紹完 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 裡面寫方法了。