if條件語句
先來看一下一個簡單的條件語句的模型
a := 1
if a > 0 {
fmt.Println("a是大於0的")
if a < 4{
fmt.Println("a是小於4的")
}
}else if a < 0{
fmt.Println("a是小於0的")
}else{
fmt.Println("a是等於0的")
}
這邊來說幾個注意點:
- GO語言中if條件語句後面不用帶括號
- GO語言中if條件語句的{}必須要有,不可以像C++一樣,如果{}內只有一行語句可以省略{}
- else或else if應該在上一個模塊的 } 的同一行之後,不可以像下面這樣寫,編譯器會報錯。
a := 1
if a > 0 {
fmt.Println("a是大於0的")
if a < 4{
fmt.Println("a是小於4的")
}
}
else if a < 0{
fmt.Println("a是小於0的")
}
else{
fmt.Println("a是等於0的")
}
//這邊出錯的原因是 Go 語言的分號是自動插入的
下面來說一個GO語言if條件語句的另一種用法,這也是GO相對於C++比較方便的一個地方:可以在條件語句先執行一個聲明語句
if statement; condition {
}
上述的statement是可選的,如果有,那就有了一個聲明語句。下面的代碼a初始化的地方在if語句中
if a := 1;a > 0 {
fmt.Println("a是大於0的")
if a < 4{
fmt.Println("a是小於4的")
}
} else if a < 0 {
fmt.Println("a是小於0的")
} else {
fmt.Println("a是等於0的")
}
GO語言中,還可以在if條件語句的地方創建一個屬於這個if條件語句的變量,如上a就是屬於這個if條件語句的變量,在後續的else if 和 else中都可以訪問這個變量,但是條件語句外不可以訪問這個變量a。
這其實好比C++在下面的for循環語句中對C優化的一點
for (int i = 0; i < 10 ; ++i)
cout << i << endl
C++這個變量i也是屬於這個for循環的,for循環外就訪問不到這個變量i了。而C語言中這樣寫是會在有些編譯器下是會報錯的。
switch選擇語句
先來看一下一個簡單的switch語句模型
a := 1
switch a{
case 1:
fmt.Println("1")
case 2:
fmt.Println("2")
default:
fmt.Println("不是1也不是2")
}
學過C++的人都知道,C++的語句每個case模塊都是需要有break的,而GO語言中卻沒有。因此這也是GO語言方便的一個地方,我們不用每次在case後面都寫一個break啦,編譯器會默認認爲執行一個case就會break了。如果不想讓它break,才需要加上關鍵字fallthrough
同樣地,switch語句也好if語句一樣,可以先執行一個聲明語句,它的用法和if也是一樣的,如下屬代碼
switch a := 1;a{ //在switch內部使用的一個變量a
case 1:
fmt.Println("1")
case 2:
fmt.Println("2")
default:
fmt.Println("不是1也不是2")
}
另外,GO語言中switch語句還可以實現,多表達式判斷的方式,用逗號隔開就可以了
switch a := 1;a{ //在switch內部使用的一個變量a
case 1,2: //如果是1或是2,都執行下面的語句
fmt.Println("1或2")
default:
fmt.Println("不是1也不是2")
}
還有無條件判斷語句,即switch後面可以沒有表達式(有聲明語句沒有表達式也算, 如下)
switch a:= 1;{
//在switch內部使用的一個變量a,但是;後面並沒有表達式,在case中進行條件判斷
case a == 1 || a == 2:
fmt.Println("1或2")
default:
fmt.Println("不是1也不是2")
}
for循環語句
GO中的循環語句沒有while了,只有for,下面來看一下一個簡單的for循環
a := 0
for i := 1; i < 10; i++{
a += i
}
下面的循環就是把1-10加到了a上。這邊還是提幾個注意點
- GO語言中for循環語句後面不要帶括號(這和if也是一樣的)
- GO語言中for循環語句的{}必須要有,不可以像C++一樣,如果{}內只有一行語句可以省略{}(這和if也是一樣的)
- GO語言中可以像C++一樣,在第一個statement部分直接執行一個聲明語句,聲明一個屬於for循環語句本身的變量
其他的用法和C++都差不多,包括像break和continue這樣的用法,對for循環中省略幾個條件能達到和while循環差不多的效果,如果三個條件都省略也可以達到死循環的效果,這個和C++也是一樣的。