- 原文地址:Part 8: if else statement
- 原文做者:Naveen R
- 譯者:咔嘰咔嘰 轉載請註明出處。
if
是條件語句,語法爲,golang
if condition {
}
複製代碼
若是condition
爲true
,介於{}
之間的代碼塊將被執行。c#
與 C 之類的其餘語言不一樣,即便{}
之間只有一個語句,{}
也是強制性須要的。less
else if
和else
對於if
來講是可選的。spa
if condition {
} else if condition {
} else {
}
複製代碼
if else
的數量不受限制,它們從上到下判斷條件是否爲真。若是if else
或者if
的條件爲true
,則執行相應的代碼塊。若是沒有條件爲真,則執行else
的代碼塊。code
讓咱們寫一個簡單的程序來查找數字是奇數仍是偶數。get
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 的結果是否爲零。若是是,則打印"the number is even"
,不然打印"the number is odd"
。在上面的程序中,將打印the number is even
。string
if
變量還能夠包含一個可選的statement
,它在條件判斷以前執行。語法爲it
if statement; condition {
}
複製代碼
讓咱們使用上面的語法重寫程序,判斷數字是偶數仍是奇數。io
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 是自動插入分號的。你能夠從這個連接查看有關分號插入規則的信息https://golang.org/ref/spec#Semicolons。
在規則中,若是}
是該行最後的一個標記,go 將會在以後插入分號。所以,在if
語句的}
以後會自動插入分號。
因此咱們的程序實際是下面這樣的,
if num%2 == 0 {
fmt.Println("the number is even")
}; //semicolon inserted by Go
else {
fmt.Println("the number is odd")
}
複製代碼
由於{...} else {...}
是一個語句,因此在它的中間不該該有分號。所以,須要將else
放在`}後的同一行中。
我已經經過在if
語句的}
以後插入else
來重寫程序,以防止自動分號插入。
package main
import (
"fmt"
)
func main() {
if num := 10; num % 2 == 0 { //checks if number is even
fmt.Println("the number is even")
} else {
fmt.Println("the number is odd")
}
}
複製代碼
如今編譯器能夠正常執行了。