1.判斷語句if
1)條件表達式沒有括號
2)支持一個初始化表達式(可以是並行方式)
3)左大括號必須和條件語言else在同一行
4)支持單行模式
5)初始化語句中的變量爲block級別,同時隱藏外部同名變量
package main
import "fmt"
func main() {
a := true
if a, b, c := 1, 2, 3; a+b+c > 6 {
fmt.Println("大於6")
} else {
fmt.Println("小於等於6")
fmt.Println(a)
}
fmt.Println(a)
}
輸出:
API server listening at: 127.0.0.1:33684
小於等於6
1
true
從上述例子看出,if中的a是1,外部的a是true,這兩個不是同一個元素,if中的屬於一個局部變量
2.循環語句for
1)Go只有for一個循環語句關鍵字,但支持3中形式
2)初始化和步進表達式可以是多個值
3)條件語句每次循環都會唄重新檢查,因此不建議在條件語句中使用函數,儘量提前計算好條件並以變量或常量代替
3)左大括號必須和條件語句在同一行
例如:不同形式的三種for循環
package main
import "fmt"
func main() {
//方式一
a := 1
for {
a++
if a > 3 {
break
}
}
fmt.Println(a)
//方式二
b := 1
for b <= 3 {
b++
}
fmt.Println(b)
//方式三
c := 1
for i := 0; i < 3; i++ {
c++
}
fmt.Println(c)
}
輸出:
API server listening at: 127.0.0.1:17197
4
4
4
3.選擇語句switch
1)可以使用任何類型或表達式作爲條件語句
2)不需要寫break,一旦條件符合自動終止
3)如果希望繼續執行下一個case,需要使用fallthrough語句
4)支持一個初始化表達式(可以是並行方式),右側需要跟分號
5)左大括號必須和條件語句在同一行
實例:
package main
import "fmt"
func main() {
fmt.Println("方式一")
a := 1
switch a {
case 0:
fmt.Println("a = 0")
case 1:
fmt.Println("a = 1")
}
fmt.Println(a)
fmt.Println("方式二")
b := 1
switch {
case b >= 0:
fmt.Println("b = 0")
fallthrough
case b >= 1:
fmt.Println("b = 1")
}
fmt.Println(b)
fmt.Println("方式三")
switch c := 1; {
case c >= 0:
fmt.Println("c = 0")
fallthrough
case c >= 1:
fmt.Println("c = 1")
}
}
輸出:
API server listening at: 127.0.0.1:14256
方式一
a = 1
1
方式二
b = 0
b = 1
1
方式三
c = 0
c = 1
4.跳轉語句 goto,break,continue
1)三個語法都可以配合標籤使用
2)標籤名區分大小寫,若不使用會造成編譯錯誤
3)break與continue配合標籤可用於多次循環的跳出
4)goto是調整執行位置,與其他2個語句配合標籤的結果並不相同
實例:
package main
import "fmt"
func main() {
fmt.Println("方式一")
LABEL:
for {
for i := 0; i < 10; i++ {
if i > 2 {
break LABEL
} else {
fmt.Println(i)
}
}
}
fmt.Println("方式二")
LABEL1:
for i := 0; i < 10; i++ {
for {
fmt.Println(i)
continue LABEL1
}
}
}
輸出:
API server listening at: 127.0.0.1:37291
方式一
0
1
2
方式二
0
1
2
3
4
5
6
7
8
9