iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 7
1

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


上一篇
邏輯判斷語法
下一篇
方法的宣告及使用
系列文
Iris這個在go語言上地表最快的網頁框架30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言