Iris 這個在 go 語言上地表最快的網頁框架-迴圈的語法

go 迴圈的語法

在介紹完 go 的邏輯判斷的之後接下來要跟大家分享一下 go 迴圈的語法,這部分內容與大部分語言相同,本來筆者想這樣告訴大家,但是其實 go 只有一個for,所以接下來筆者會說明如何用一個for來完成其他語言的forforeachwhile這種迴圈判斷式。

go 的 for迴圈

因為 go 的迴圈語法只有for一種所以接下來會以其他語言的forforeachwhile來解釋如何在 go 裡面完成。

for

所以先針對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的寫法。

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來接他,在mapk所取到的就是key,如果在slice需要index的話也可以用變數來接他,這部分就不贅述了,接下來就說明一下如何處理while

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 裡面寫方法了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *