iT邦幫忙

2021 iThome 鐵人賽

DAY 11
0
自我挑戰組

轉職未滿一年的點點滴滴系列 第 11

[Day 11] -『 GO語言學習筆記』- switch 敘述

以下筆記摘錄自『 The Go Workshop 』。

如果遇到需要一大堆if敘述才能處理的狀況,就可以引用Go語言裡的另一種條件判斷敘述:Switch。

Switch語法介紹

switch <起始賦值敘述>; <運算式> {
case <運算式> :
    <程式敘述>
case <運算式>, <運算式>:
    <程式敘述>
    fallthrough
...
default:
    <程式敘述>

與if敘述只能使用布林運算式不同,Switch運算式回傳值可以是非布林值。

  1. 上述的起始賦值敘述/運算式都是非必要,可以只寫其中一個(switch <起始賦值敘述>switch <運算式>),也可以兩個都不寫。如果沒有寫運算式,效果就跟寫成switch true一樣。

  2. case用來檢查要執行的條件,運算式有兩種寫法,可以寫成像if敘述的布林運算式,或者直接寫一個值,這個值會跟swith自身運算式的值做比較。

  3. 後面的程式敘述跟if程式區很像,但不需要用大括號。

  4. Go語言會一由上至下的順序檢查各個case得值或運算式,只要找的一個檢查通過的case,Go語言就會只執行它對應的程式敘述並離開switch,這點與許多其他語言的switch不太一樣。

  5. 使用fallthrough則可以讓Go語言執行到該行後繼續往下檢查下一個case的條件。

  6. default敘述作用同if敘述中的else,當所有case的運算式都不成立或值不符合時,就會執行它。

For example

package main

import (
	"fmt"
	"time"
)

func main() {
	day := time.Monday
	switch day {
	case time.Monday:
		fmt.Println("星期一,猴子穿新衣")
	case time.Tuesday:
		fmt.Println("星期二,猴子肚子餓")
	case time.Wednesday:
		fmt.Println("星期三,猴子去爬山")
	case time.Thursday:
		fmt.Println("星期四,猴子去考試")
	case time.Friday:
		fmt.Println("星期五,猴子去跳舞")
	case time.Saturday:
		fmt.Println("星期六,猴子去斗六")
	case time.Sunday:
		fmt.Println("星期日,猴子過生日")
	default:
		fmt.Println("日期不正確")
	}
}

//output
星期一,猴子穿新衣


上一篇
[Day 10] -『 GO語言學習筆記』- if 敘述的起始賦值
下一篇
[Day 12] -『 GO語言學習筆記』- for range 迴圈
系列文
轉職未滿一年的點點滴滴30

尚未有邦友留言

立即登入留言