這是Golang系列教程 的第8個教程
文章目錄
if 是一個條件語句,if 語句的語法是
if condition {
}
如果 condition
爲真,{
和 }
之間的代碼行被執行。
和其他 C 之類的語言不一樣,{ }
是強制性的,即使在 {}
之間只有一條語句。
if 語句也有可選的 else if
和 else
部分
if condition {
} else if condition {
} else {
}
可以有任意數量的 else if
。從上到下評估條件是否爲真實性。 任何 if
或 else 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")
}
}
在上面的程序中 num
在 if
語句中被初始化。需要注意的是 num
僅可以在 if
和 else
語句中被訪問,即 num
的作用域被限定在 if
else
塊中。如果我們試圖在 if
或 else
外訪問 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")
}
}
** 下一教程 - 循環 **