Friday, January 28, 2022

[用Golang寫小遊戲教學] 第七章 控制結構

[前言]

車輛需要依照交通規則、號誌與標誌來行駛,紅燈時停止、等待,綠燈直行或是轉彎,行駛速度也須遵守時速上限。在程式的世界中,執行程式的電腦也會遵守程式碼內所撰寫的控制結構來執行。在Golang的控制結構包含: If、Switch與For


注意: goto 這個控制結構我們先不研究歐!

[ If 陳述式]

Golang的if 陳述式用來控制程式執行符合條件的區塊,以下是 語法:

if condition1 {
// 如果 condition1 是true, 則此區塊會被執行
} else if condition2 {
        // 如果 condition2 是true, 則此區塊會被執行
} else {
       // 如果 condition1 與 condition2 都不是true, 則此區塊會被執行
}

If陳述式內的條件(condition),可以是產生 true / false 的運算式、變數的值等等。也可以利用 && (and) 或是 || (or) 去做交集或是聯集關係。

請看下列簡單的例子

myAge := 18
if myAge < 18 {
    fmt.Println("My age is less than 18")
} else if myAge == 18 {
    fmt.Println("My age is 18")
} else {
    fmt.Println("My age greater than 18")
}

myName := "Danny"
if myAge == 18 && myName == "Danny" {
    fmt.Println("Bingo")
} else {
    fmt.Println("Oops")
}

執行結果:
My age is 18
Bingo

[Switch 陳述式]

Switch 陳述式採用表達式並將其與可能的條件清單匹配。找到匹配項目後,它會執行指定匹配條件區塊內的程式碼。其中,Switch可以不帶條件,我們先改寫上列的例子:

myAge2 := 18
switch {
case myAge2 < 18:
fmt.Println("My age is less than 18")
case myAge2 == 18:
fmt.Println("My age is 18")
default:
fmt.Println("My age greater than 18")
}

但一般常用的情形是有帶條件的switch,例如:

day:= 3
switch day {
case 1, 2, 3, 4, 5:
fmt.Println("上班日")
case 6:
fmt.Println("周末")
        case 7:
                fmt.Println("周日")
default:
fmt.Println("錯誤輸入")
}

[For 迴圈]

Golang 只有一個迴圈陳述式:For 迴圈,其用於重複執行程式碼區塊。以下是 Golang 中 For 迴圈的一般語法:

for initialization; condition; increment {
// 重複執行的區塊
}

直接看一個例子:
initialization 就是初始化一個變數與值( i := 0 )
condition為 (i < 10),For迴圈會不段重複執行,當 i < 10 成立
increment 為 ( i++), 意思是每次重複執行程式碼區塊後,i加上1

for i := 0; i < 10; i++ {
fmt.Println("數字:", i)
}

上述的例子都可以參考下列 go playground 並執行

結果:
My age is 18
Bingo
My age is 18
數字: 0
數字: 1
數字: 2
數字: 3
數字: 4
數字: 5
數字: 6
數字: 7
數字: 8
數字: 9







No comments: