這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 if: 使用的文法如: if x > 10 { fmt.Println("x大於10")
} else { fmt.Println("x小於10")
} 條件判斷語句中不需要括弧。與其他語言不同的就是條件判斷語句裡允許聲明一個變數,這個變數的範圍在該條件邏輯塊內有效,其他地方不起作用,如: if x := randVal(); x > 10 { fmt.Println("x大於10")
} else { fmt.Println("x小於10")
}
switch: 文法:switch 運算式 { case 運算式1:
程式動作陳述式
case 運算式2:
程式動作陳述式
} go中的switch非常的強大,case的值不必是標量,而可以是一個運算式的執行結果,只要運算式的結果類型和條件的類型一樣就可以了,可以把多個值集合在一個case裡面,只要條件運算式的值符號此case中的其中一個值就可以執行case裡面的語句,同時case預設帶有break,匹配成功就不會執行下面的判斷語句了,如果要繼續判斷接下來的case,可以在case裡面增加fallthrough來強制執行後面的case代碼。如果switch沒有運算式,它會匹配true。如; i := 10 switch i { case 2-1:
fmt.Println("i的值為2-1")
case 2,3,4,5:
fmt.Println("i的值在2到5之間")
fallthrough
case 10:
fmt.Println("i的值等於10")
default:
fmt.Printf("i的值為:%d\n", i); }
for: 更其他語言一樣用來迴圈讀取資料,但他更強大,go中沒有while,do while等語句,都是通過for語句來實現的。 使用:for 運算式1; 運算式2; 運算式3 { 執行的程式語句
} for 判斷語句同樣沒有括弧括起來,和其他語言一樣運算式1在迴圈開始之前調用,運算式3在每輪迴圈結束之時調用,表單式2用來進行每次迴圈的判斷。在go中運算式1和運算式3可以省略,來當while功能如: sum := 1 for sum < 100 { sum += sum
}
for range這個語句相當的好用類似於foreach或for in語句。用for range可以來讀取字串,數組,slice,map,channel的資料,如: for k, v := range map{ fmt.Println("map's key:", k)
fmt.Println("map's value:", v)
} 如果不需要相關的值,可以使用"_",來丟棄相關的傳回值。如: for _, v := range arr { .....
} 注意:迭代右運算式在迴圈開始前,一次性的計算好,迭代的變數遵循變數類型的賦值原則,如果是指標指向類型,則在迭代的過程中,如果有修改相關值,會影響到相關的迭代過程,如果是值拷貝的,在迭代過程中對原變數變更,不會影響對迴圈前變數值的迭代過程。
break|continue|goto: 和其他語言一樣通過break來跳出迴圈,continue來跳過本次迴圈,break和continue還可以跟著標號,來跳到多重迴圈中的外出迴圈。break也可以配合標籤來使用,以跳出到指定的標籤位置。goto也和標籤配合使用來使程式跳轉到指定的標籤位置,標籤從新的一行開始,並且與冒號結束,標籤名大小寫敏感。