講到程式一定要講流程控制的,if/else
、switch case
、for loop
,今天就來介紹這些流程吧
if
陳述式用於根據給定的條件,決定是否應執行程式碼區塊。應該不用多做介紹,下面範例中if
、else if
、else
都使用到了,應該很好懂
score := 70
if score < 60 {
fmt.Println("failed")
} else if score < 80 {
fmt.Println("pass")
} else {
fmt.Println("great pass")
}
// 執行結果: pass
if elseif
能解決大部分的問題,但當需要做的判斷變多時,if else
大概就像這張圖,因此出現了switch case
。
下面是正常的switch
寫法
index := "A"
switch index {
case "A":
fmt.Println("80-100")
case "B":
fmt.Println("70-80")
case "C":
fmt.Println("60-70")
case "D":
fmt.Println("failed")
}
output:
80-100
Go的switch
也允許帶條件式,如下面的使用法
score := 75
switch {
case score < 60:
fmt.Println("D")
case score > 60 && score <= 70:
fmt.Println("C")
case score > 70 && score <= 80:
fmt.Println("B")
case score > 80:
fmt.Println("A")
}
// B
if else
與switch case
沒有用哪個比較好一說,若條件少時使用if else
會比較直觀,條件多用switch case
則較好理解,適當前情況再決定就可。
Go當中只有for
一種迴圈法,不像有些程式有for
、while
、until
各種寫法,且Go中的for
可以依照使用者所需決定寫法,方便很多ˊˇˋ
for搭配三個參數的寫法,分別是:for 初始值;條件;運行 {...}
for i := 0; i < 10; i++ {
fmt.Printf("%d ", i)
}
// 執行結果: 0 1 2 3 4 5 6 7 8 9
i := 0
迴圈內使用的變數,通常是i
,前面沒宣告過因此要先定義i < 10
進入迴圈的條件,滿足這個條件就會進入迴圈一次i++
每完成一次迴圈會進行的操作,通常會與第二點設的條件有關,以本例就是i++
,在執行第10次後i=10
,因此跳出迴圈只有一個參數,控制變音
宣告在迴圈外,for
只搭配條件式,i++
則寫在迴圈內,下面是範例
i := 0
for i < 10 {
fmt.Printf("%d ", i )
i++
}
output:
0 1 2 3 4 5 6 7 8 9
若某條件達到時要直接跳出迴圈,Go也提供了break的
寫法,以下提供範例,若score
中有滿分的就將exist
設為true
並跳出迴圈
func main() {
score := []int{70, 60, 59, 30, 86, 100, 90, 53, 66, 73}
var exist bool
for i := 0; i < len(score); i++ {
if score[i] >= 100 {
exist = true
break
}
}
if exist {
fmt.Println("There someone got full score.")
} else {
fmt.Println("Nobody got full score.")
}
}
output:
There someone got full score.
除了break
直接終止迴圈外,也有continue
這種跳過一次迴圈的用法,以1-50不印出7的倍數為例
func main() {
for i := 0; i <= 50; i++ {
if i%7 == 0 {
continue
}
fmt.Print(i, " ")
}
}
output:
1 2 3 4 5 6 8 9 10 11 12 13 15 16 17 18 19 20 22 23 24 25 26 27 29 30 31 32 33 34 36 37 38 39 40 41 43 44 45 46 47 48 50
今天大概就介紹到這,基礎部分大概就到這了吧?再來都是難產的文QQ,繼續加油