這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
流程式控制制
- 條件: 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. 內建break
c. 如果需要匹配成功後,還要繼續向下執行,可以用關鍵字 fallthrough
2. 迴圈
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等
3. 跳轉
goto可以跳轉到指定標籤位置
標籤1: 標籤2: goto 標籤1
註:
標籤也有範圍,並且區分大小寫
note_flow_control.go code list
package mainimport "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? *//********************///switchnum := 2switch num {case 1:fmt.Println("No.1")case 2:fmt.Println("No.2")case 3:fmt.Println("No.3")fallthroughcase 4:fmt.Println("No.4")default:fmt.Println("No.-1")}/*********************//*運行結果: *//*No.2 *//*如果num=3 *//*No.3 *//*No.4 *//*********************///forsum := 0for i := 1; i <= 100; i++ {sum += i}fmt.Println("1+2+...+100 = ", sum) //1+2+...+100 = 5050sum2, j := 0, 1for ; j <= 100; j++ {sum2 += j}fmt.Println("1+2+...+100 = ", sum2) //1+2+...+100 = 5050sum3, k := 0, 1for k <= 100 {sum3 += kk++}fmt.Println("1+2+...+100 = ", sum3) //1+2+...+100 = 5050sum4, k := 0, 1for {sum4 += kk++if k > 100 {break}}fmt.Println("1+2+...+100 = ", sum4) //1+2+...+100 = 5050}
運行結果: