條件判斷
if
我們可以使用簡單的 if 敘述
1 2 3 4 5 6 7 8 9 10 11 12
| package main
import ( "fmt" )
func main() { x := 0 if x == 0 { fmt.Println("x == 0") } }
|
else
或者在添加一個輔助判斷
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| package main
import ( "fmt" )
func main() { x := 0 if x == 0 { fmt.Println("x == 0") } else{ fmt.Println("x != 0") } }
|
else if
我們也能使用三個判斷
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| package main
import ( "fmt" )
func main() { x := 0 if x == 0 { fmt.Println("x == 0") } else if x == 1{ fmt.Println("x != 0") } else{ fmt.Println("x >= 0") } }
|
if 敘述的起始賦值
為了防止多佔一份記憶體空間,我們可以在 if
敘述中加上所謂的 起始賦值敘述
1 2 3
| if <起始賦值敘述> ; <布林運算式>{ 程式區塊 }
|
我們來直接看看範例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| package main
import ( "errors" "fmt" )
func chose(x int) error { if x < 0 { return errors.New(" !< 0") } else { return nil } }
func main() { x := 3 if err := chose(x); err != nil { fmt.Println(err) } else if x%3 == 0 { fmt.Println("整除 3") } else { fmt.Println("none") } }
|
我們可以先不看 error
的部分,這邊我們使用了如果 error
不為 nil
的時候,沒有發現錯誤的情況下,才會繼續處理 else if
的部分。
使用 switch
我們可以從單純的 if / else 去看這個新函式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| package main
import ( "fmt" "time" )
func main() { keep := time.Friday switch keep { case time.Friday: fmt.Println("5") case time.Monday: fmt.Println("1") default: fmt.Println("none") } }
|
一樣是由上到下,但是如果你想將所有符合的 case
都執行的話,在下方可以加上 fallthrough
這個關鍵字,所以說使用 switch
能比單純的 if/else
更加好使。
迴圈
在 golang
只支援 for
迴圈,但是它非常有彈性。我們可以直接看看例子。
1 2 3 4
| for{ fmt.Println(x) }
|
比如正上方的用法就會形成一種無限迴圈,所以需要給它添加條件以及 break
。
正常來說,一般的用法會是這樣
1 2 3
| for i := 0; i < 5; i++ { fmt.Println(x); }
|
再來,我們來看看 map
或是 陣列的走訪
1 2 3 4 5 6 7 8 9 10 11 12
| package main
import ( "fmt" )
func main() { x := []string{"0", "1", "2"} for i := 0; i < len(x); i++ { fmt.Println(x[i]) } }
|
至於 map
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| package main
import ( "fmt" )
func main() { config := map[string]string{ "0": "3", "1": "4", "2": "5", } for key, val := range config { fmt.Println(key, " = ", val) } }
|
或者我們也可以使用 _
來代替 key
或 val
…..,就單看你想要取出來麼來使用……
break and continue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package main
import ( "fmt" )
func main() { x := 55 for { if x%5 == 0 { fmt.Println("略") x -= 1 continue } if x > 0 { x -= 1 break } } fmt.Println(x) }
|
continue 會中只當下這個迴圈,並進入新一輪迴圈。但是變數遞增或事遞減都會繼續執行
break 則是中斷此迴圈