- 條件: if else else if switch
- 循環: for
- 跳轉: goto
- 關鍵字: break continue fallthrough range
1. 條件
1.1 if else
1.1.1語法:
if [聲明變量;] condition1 {
//...
[} else if condition2 {]
//...
[} else {]
//...
}
1.1.2 注意:a. []中的內容爲可選,if 條件判斷中可以聲明變量 :=
b. {}是必須的, condition 不需要用()括起來, {必須與else/if在同一行代碼中
c. 在有返回值函數中,不允許把“最終的” return 語句放到if else 結構中,否則編譯出錯
1.2 switch
就是多個if...else
switch後面的表達式可以省略
注:
a.
case 3:
case 4:
//可以直接寫爲:
case 3, 4:
b. 自帶breakc. 如果需要匹配成功後,還要繼續向下執行,可以用關鍵字 fallthrough
go語言中只支持 for,無while
格式:
for 表達式1; 表達式2; 表達式3 {
//語句
}
注:a. 表達式1,3支持多重賦值,如i, j [:]= 1, 2
b. 三個表達式均可以省略,注意死循環
c. 也有break, continue分別爲跳出循環和跳出本次循環, break還可以跳轉到標籤
d. for 與 range 配合使用,可遍歷slice, array, string等
goto可以跳轉到指定標籤位置
標籤1:
標籤2:
goto 標籤1
注:標籤也有作用域,並且區分大小寫
note_flow_control.go code list
package main
import "fmt"
func main() {
//if...else...
if a, b := 2, 3; a == 2 {
fmt.Println("a, b = ", a, b)
goto Two
} else {
goto One
}
One:
fmt.Println("goto one")
fmt.Println("go 1 ?")
Two:
fmt.Println("goto two")
fmt.Println("go 2?")
/********************/
/*運行結果: */
/*a, b = 2 3 */
/*goto two */
/*go 2? */
/********************/
//switch
num := 2
switch num {
case 1:
fmt.Println("No.1")
case 2:
fmt.Println("No.2")
case 3:
fmt.Println("No.3")
fallthrough
case 4:
fmt.Println("No.4")
default:
fmt.Println("No.-1")
}
/*********************/
/*運行結果: */
/*No.2 */
/*如果num=3 */
/*No.3 */
/*No.4 */
/*********************/
//for
sum := 0
for i := 1; i <= 100; i++ {
sum += i
}
fmt.Println("1+2+...+100 = ", sum) //1+2+...+100 = 5050
sum2, j := 0, 1
for ; j <= 100; j++ {
sum2 += j
}
fmt.Println("1+2+...+100 = ", sum2) //1+2+...+100 = 5050
sum3, k := 0, 1
for k <= 100 {
sum3 += k
k++
}
fmt.Println("1+2+...+100 = ", sum3) //1+2+...+100 = 5050
sum4, k := 0, 1
for {
sum4 += k
k++
if k > 100 {
break
}
}
fmt.Println("1+2+...+100 = ", sum4) //1+2+...+100 = 5050
}
運行結果: