使用 if/else 運算式測試條件

已完成

if/else 陳述式是所有程式設計語言中最基本的控制流程, 所以在 Go 中,if/else 陳述式很簡單, 但是,您必須先了解幾項差異,才會開始習慣撰寫 Go 程式。

讓我們看看 if 陳述式的 Go 語法。

if 陳述式的語法

與其他程式設計語言不同,Go 中的「條件不需要括弧」else 子句是選擇性子句。 但仍然需要大括弧。 而且,Go 不支援使用三元 if 陳述式縮減行數,所以每次都必須撰寫完整的 if 陳述式。

以下是 if 陳述式的基本範例:

package main

import "fmt"

func main() {
    x := 27
    if x%2 == 0 {
        fmt.Println(x, "is even")
    }
}

在 Visual Studio Code 中,如果您的 Go 語法條件包含括弧,則系統會在儲存程式時自動移除括弧。

複合 if 陳述式

Go 支援複合 if 陳述式, 您可以使用 else if 陳述式語句建立巢狀陳述式。 以下是範例:

package main

import "fmt"

func givemeanumber() int {
    return -1
}

func main() {
    if num := givemeanumber(); num < 0 {
        fmt.Println(num, "is negative")
    } else if num < 10 {
        fmt.Println(num, "has only one digit")
    } else {
        fmt.Println(num, "has multiple digits")
    }
}

請注意,在這段程式碼中,num 變數會儲存 givemeanumber() 函式傳回的值,而「所有 if 分支都可以使用」此變數。 但是,如果您嘗試在 if 區塊外列印 num 變數的值,則會收到錯誤:

package main

import "fmt"

func somenumber() int {
    return -7
}
func main() {
    if num := somenumber(); num < 0 {
        fmt.Println(num, "is negative")
    } else if num < 10 {
        fmt.Println(num, "has 1 digit")
    } else {
        fmt.Println(num, "has multiple digits")
    }

    fmt.Println(num)
}

當您執行程式時,錯誤輸出看起來像這樣:

# command-line-arguments
./main.go:17:14: undefined: num

在 Go 中,宣告 if 區塊內的變數是慣用的。 使用慣例有效地進行程式設計在 Go 中很常見。