新聞中心
在Go語言中,關(guān)鍵字 if 是用于測試某個條件(布爾型或邏輯型)的語句,如果該條件成立,則會執(zhí)行 if 后由大括號{}括起來的代碼塊,否則就忽略該代碼塊繼續(xù)執(zhí)行后續(xù)的代碼。

if condition {
// do something
} 如果存在第二個分支,則可以在上面代碼的基礎(chǔ)上添加 else 關(guān)鍵字以及另一代碼塊,這個代碼塊中的代碼只有在條件不滿足時才會執(zhí)行,if 和 else 后的兩個代碼塊是相互獨(dú)立的分支,只能執(zhí)行其中一個。
if condition {
// do something
} else {
// do something
} 如果存在第三個分支,則可以使用下面這種三個獨(dú)立分支的形式:
if condition1 {
// do something
} else if condition2 {
// do something else
}else {
// catch-all or default
}else if 分支的數(shù)量是沒有限制的,但是為了代碼的可讀性,還是不要在 if 后面加入太多的 else if 結(jié)構(gòu),如果必須使用這種形式,則盡可能把先滿足的條件放在前面。
關(guān)鍵字 if 和 else 之后的左大括號{必須和關(guān)鍵字在同一行,如果你使用了 else if 結(jié)構(gòu),則前段代碼塊的右大括號 }必須和 else if 關(guān)鍵字在同一行,這兩條規(guī)則都是被編譯器強(qiáng)制規(guī)定的。
非法的 Go 代碼:
if x{
}
else { // 無效的
} 要注意的是,在使用 gofmt 格式化代碼之后,每個分支內(nèi)的代碼都會縮進(jìn) 4 個或 8 個空格,或者是 1 個 tab,并且右大括號}與對應(yīng)的 if 關(guān)鍵字垂直對齊。
在有些情況下,條件語句兩側(cè)的括號是可以被省略的,當(dāng)條件比較復(fù)雜時,則可以使用括號讓代碼更易讀,在使用 &&、|| 或 ! 時可以使用括號來提升某個表達(dá)式的運(yùn)算優(yōu)先級,并提高代碼的可讀性。
舉例
通過下面的例子來了解 if 的寫法:
var ten int = 11
if ten > 10 {
fmt.Println(">10")
} else {
fmt.Println("<=10")
}代碼輸出如下:
>10
代碼說明如下:
- 第 1 行,聲明整型變量并賦值 11。
- 第 2 行,判斷當(dāng) ten 的值大于 10 時執(zhí)行第 3 行,否則執(zhí)行第 4 行。
- 第 3 和第 5 行,分別打印大于 10 和小于等于 10 時的輸出。
特殊寫法
if 還有一種特殊的寫法,可以在 if 表達(dá)式之前添加一個執(zhí)行語句,再根據(jù)變量值進(jìn)行判斷,代碼如下:
if err := Connect(); err != nil {
fmt.Println(err)
return
}Connect 是一個帶有返回值的函數(shù),err:=Connect() 是一個語句,執(zhí)行 Connect 后,將錯誤保存到 err 變量中。
err != nil 才是 if 的判斷表達(dá)式,當(dāng) err 不為空時,打印錯誤并返回。
這種寫法可以將返回值與判斷放在一行進(jìn)行處理,而且返回值的作用范圍被限制在 if、else 語句組合中。
提示
在編程中,變量的作用范圍越小,所造成的問題可能性越小,每一個變量代表一個狀態(tài),有狀態(tài)的地方,狀態(tài)就會被修改,函數(shù)的局部變量只會影響一個函數(shù)的執(zhí)行,但全局變量可能會影響所有代碼的執(zhí)行狀態(tài),因此限制變量的作用范圍對代碼的穩(wěn)定性有很大的幫助。
本文標(biāo)題:創(chuàng)新互聯(lián)GO教程:Go語言if else(分支結(jié)構(gòu))
地址分享:http://www.dlmjj.cn/article/djoedgs.html


咨詢
建站咨詢
