[譯] part 8: golang if else 語句

if是條件語句,語法爲,golang

if condition {  
}
複製代碼

若是conditiontrue,介於{}之間的代碼塊將被執行。c#

與 C 之類的其餘語言不一樣,即便{}之間只有一個語句,{}也是強制性須要的。less

else ifelse對於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")
    }
}
複製代碼

Run in playground編譯器

if num % 2 == 0語句檢查將數字除以 2 的結果是否爲零。若是是,則打印"the number is even",不然打印"the number is odd"。在上面的程序中,將打印the number is evenstring

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")
    }
}
複製代碼

Run in playground

在上面的程序中,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")
    }
}
複製代碼

Run in playground

在上面的程序中,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")
    }
}
複製代碼

Run in playground

如今編譯器能夠正常執行了。

相關文章
相關標籤/搜索