GO(3) - control flow

簡單地介紹一下 Go 中 control flow 的寫法。

1. if 條件式:

輸入參數,並判斷是否在特定範圍內。

package main

import (
    "flag"
    "fmt"
)

func main() {
    agePtr := flag.Int("age", 1, "user age")
    flag.Parse()
    age := *agePtr
    fmt.Println("age:", age)

    if age < 10 {
        fmt.Println("Very young")
    } else if age >= 10 && age <= 30 {
        fmt.Println("Yong")
    } else {
        fmt.Println("Old")
	}
}

另一種很常出現的寫法是在 if 判斷時生成一個新的區域變數,再對該區域變數做判斷 (如: line := file.Read)。

package main

import "fmt"

func main() {
    file := "Hello world"
    if line := file; len(line) != 0 {
        fmt.Println(line)
    }
}

2. switch 條件式:

切換各個條件。

package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {
    fmt.Print("Do you like cat(0) or dog(1):")

    reader := bufio.NewReader(os.Stdin)
    input, _ := reader.ReadString('\n')
    input = strings.TrimSpace(input)
    fmt.Println(input)

    switch input {
    case "0":
        fmt.Println("Cat!!")
    case "1":
        fmt.Println("Dog!!")
    default:
        fmt.Println("??")
    }
}

一次比對多個條件。

func main() {
    input := "3"
    switch input {
    case "0", "1", "2":
        fmt.Println("0 1 2 !!")
    case "3", "4", "5":
        fmt.Println("3 4 5")
    default:
        fmt.Println("??")
    }
}

3. for 迴圈:

傳統 for 類似 C 的寫法。

package main

import "fmt"

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

while loop 等於沒有條件的 for。

package main

import "fmt"

func main() {
    count := 0
    for {
        fmt.Println("count:", count)
        count += 1
        if count > 10 {
            break
        }
    }
}

用 range 迭代回傳 index 及 item。

package main

import "fmt"

func main() {
    arr := []int{1, 2, 3, 4}
    for idx, it := range arr {
        fmt.Printf("idx: %d, it: %d\n", idx, it)
    }
}

留言

熱門文章