在程序控制方面一般都是if語句和switch語句的,那麼在Go語言當中同樣是有if語句和switch語句,而且還有它自身一些獨特的特點,那麼下面慢慢介紹這兩個程序控制語句。
1、if語句
在Go語言當中if語句的語法為:
if 條件判斷1 {
...
} else if 條件判斷2 {
...
} else {
...
}
注意這個“{”必須和條件判斷在同一行,這一點跟其它的語言有一點不太一樣。
同時在Go語言當中,if當中還支持有一個初始化語句,同時與條件判斷用“;”隔開,即語法為:
if 初始化語句; 條件判斷1 {
...
} else if 條件判斷2 {
...
} else {
...
}
舉例說明:
例子1:
a := 10
if a > 8 {
fmt.Println("a = ", a)
}
由於a為10,10是大於8的,滿足條件,所以可以輸出結果,即:
a = 10
例子2:
if ch := 'b'; ch > 'b' {
fmt.Println("ch > b")
} else if ch < 'b' {
fmt.Println("ch < b")
} else {
fmt.Println("ch = b")
}
這個例子當中,是在條件判斷的前面加了一個初始化語句,變量ch的值被初始為'b',那麼前面兩個判斷條件都不滿足,所以只有走else,那麼結果為:
ch = b
2、switch語句
在Go語言當中switch語句的語法為:
switch 變量 {
case 值1:
...
// 默認是帶有break
case 值2:
...
// 默認是帶有break
case 值3, 值4: // 如果有多個值用“,”隔開
...
// 默認是帶有break
default:
...
}
注意:在Go語言當中是默認帶有break的,即只滿足了一個條件,執行完後,就會跳出這個switch語句,同時如果case後面有多個值,則用“,”隔開,表示滿足其中一個值,就可以執行裡面的語句。
當然在switch後面也是可以帶一個初始化語句的,然後與變量名用“;”隔開,即:
switch 初始化語句; 變量 {
case 值1:
...
// 默認是帶有break
case 值2:
...
// 默認是帶有break
case 值3, 值4: // 如果有多個值用“,”隔開
...
// 默認是帶有break
default:
...
}
同時Go語言也支持在switch後面直接是“{”,然後在case上加條件判斷,即:
switch {
case 條件判斷1:
...
// 默認是帶有break
case 條件判斷2:
...
// 默認是帶有break
case 條件判斷3:
...
// 默認是帶有break
default:
...
}
舉例說明:
例子1:
switch a := 3; a {
case 1:
fmt.Println("a = 1")
case 2:
fmt.Println("a == 2")
case 3, 4:
fmt.Println("a == 3")
default:
fmt.Println("xxx")
}
由於a的值為3,滿足第3個case,則打印結果為:
a == 3
例子2:
num := 90
switch {
case num >= 80:
fmt.Println("num >= 80,則為優秀")
case num >= 70:
fmt.Println("80 > num >= 70,則為良好")
case num >= 60:
fmt.Println("70 > num >= 60,則為及格")
default:
fmt.Println("不及格")
}
由於num為90,則滿足第1個case條件,執行完成後,由於默認帶有break則跳出switch,則打印結果為:
num >= 80,則為優秀
注意在switch語句,可以加上fallthrough關鍵字,程序執行到fallthrough後,那麼後面的case會無條件執行,也即多會執行,例如:
switch a := 1; a {
case 1:
fmt.Println("a = 1")
fallthrough
case 2:
fmt.Println("a == 2")
fallthrough
case 3, 4:
fmt.Println("a == 3")
fallthrough
default:
fmt.Println("xxx")
}
a的值初始化為1,那麼滿足條1個case,首先打印a = 1,由於有fallthrough關鍵字,則不會跳出switch語句,會無條件執行後面的第2個case,依次類推,所以結果為:
a = 1
a == 2
a == 3
xxx
閱讀更多 架構與我 的文章