Part8 if else 語句

這是Golang系列教程 的第8個教程

文章目錄


if 是一個條件語句,if 語句的語法是

if condition {
}

如果 condition 爲真,{} 之間的代碼行被執行。

和其他 C 之類的語言不一樣,{ } 是強制性的,即使在 {} 之間只有一條語句。

if 語句也有可選的 else ifelse 部分

if condition {  
} else if condition {
} else {
}

可以有任意數量的 else if。從上到下評估條件是否爲真實性。 任何 ifelse if 被評估爲真,就執行相應的代碼塊。如果條件都不爲真,則執行 else 塊。

我們來寫一個簡單的程序,找出一個數字是偶數還是奇數

package main

import (  
    "fmt"
)

func main() {  
    num := 10
    if num % 2 == 0 { //checks if number is even
        fmt.Println("the number is even") 
    }  else {
        fmt.Println("the number is odd")
    }
}

語句 if num % 2 == 0 檢查數字對 2 取餘是否爲0,如果是,則 the number is even 被打印,否則,打印 the number is odd 。上面的程序打印 the number is even

if 語句還有一個變種,它包含一個可選的 statement 組件,它在條件評估之前被執行。它的語法是

if statement; condition {  
}

我們使用上面的語法重寫發現數字是奇數還是偶數的程序

package main

import (  
    "fmt"
)

func main() {  
    if num := 10; num % 2 == 0 { //checks if number is even
        fmt.Println(num,"is even") 
    }  else {
        fmt.Println(num,"is odd")
    }
}

在上面的程序中 numif 語句中被初始化。需要注意的是 num 僅可以在 ifelse 語句中被訪問,即 num 的作用域被限定在 if else 塊中。如果我們試圖在 ifelse 外訪問 num。編譯器將抱怨。

我們使用 else if 再寫一個程序

package main

import (  
    "fmt"
)

func main() {  
    num := 99
    if num <= 50 {
        fmt.Println("number is less than or equal to 50")
    } else if num >= 51 && num <= 100 {
        fmt.Println("number is between 51 and 100")
    } else {
        fmt.Println("number is greater than 100")
    }
}

在上面的程序中,else if num >= 51 && num <= 100 爲真,因此程序輸出 number is between 51 and 100

疑難雜症

else 語句必須和 if 語句的結束符 } 在同一行的後面,否則編譯器將拋異常

我們寫個程序來理解這一點

package main

import (  
    "fmt"
)

func main() {  
    num := 10
    if num % 2 == 0 { //checks if number is even
        fmt.Println("the number is even") 
    }  
    else {
        fmt.Println("the number is odd")
    }
}

在上面的程序中,else 語句並不是在 if 語句的結束符 } 同一行的後面。而是另起一行,這在 Go 中是不被允許的,如果運行這個程序,編譯器將打印錯誤

main.go:12:5: syntax error: unexpected else, expecting }  

出現這個的原因是由於 Go 會自動添加分號,你可以閱讀 分號插入規則

在規則中,指定如果它是一行的結束標記,在 } 後,將插入一個分號。所以分號被自動插入到 if 語句的結尾 }

所以我們的程序實際上是

if num%2 == 0 {  
      fmt.Println("the number is even") 
};  //semicolon inserted by Go
else {  
      fmt.Println("the number is odd")
}

由於 if{...} else {...} 是一個語句,它中間不應該出現分號。因此在結束符 } 後的同一行添加一個 else 是必要的。

下面是我重寫後的程序

package main

import (  
    "fmt"
)

func main() {  
    num := 10
    if num%2 == 0 { //checks if number is even
        fmt.Println("the number is even") 
    } else {
        fmt.Println("the number is odd")
    }
}

** 下一教程 - 循環 **

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章