關于條件語句,需要注意以下幾點: 條件語句不需要使用括號將條件包含起來(); 無論語句體內有幾條語句,花括號{}都是必須存在的; 左花括號{必須與if或者else處于同一行; 在if之后,條件語句之前,可以添加變量初始化語句,使用;間隔; 在有返回值的函數中,不允許將“最終的”return語句包含在if…else…結構中, 否則會編譯失敗: function ends without a return statement。 失敗的原因在于,Go編譯器無法找到終止該函數的return語句。編譯失敗的案例如下:
func example(x int) int { if x == 0 { return 5 } else { return x }}在使用switch結構時,我們需要注意以下幾點: 左花括號{必須與switch處于同一行; 條件表達式不限制為常量或者整數; 單個case中,可以出現多個結果選項; 與C語言等規則相反,Go語言不需要用break來明確退出一個case; 只有在case中明確添加fallthrough關鍵字,才會繼續執行緊跟的下一個case; 可以不設定switch之后的條件表達式,在此種情況下,整個switch結構與多個if…else…的邏輯作用等同。
示例1:
sum := 0 for i := 0; i < 10; i++ { sum += i }可以看到比較大的一個不同在于for后面的條件表達式不需要用圓括號()包含起來。Go語言還進一步考慮到無限循環的場景,讓開發者不用寫無聊的for (;;) {} 和 do {} while(1);而直接簡化為如下的寫法: 示例2:
sum := 0 for { sum++ if sum > 100 { break } }在條件表達式中也支持多重賦值,如下所示:
a := []int{1, 2, 3, 4, 5, 6}for i, j := 0, len(a) –1; i < j; i, j = i + 1, j –1 { a[i], a[j] = a[j], a[i]}Go語言的for循環同樣支持continue和break來控制循環,但是它提供了一個更高級的 break,可以選擇中斷哪一個循環,如下例:
for j := 0; j < 5; j++ { for i := 0; i < 10; i++ { if i > 5 { break JLoop } fmt.Println(i) }}JLoop:// ...本例中,break語句終止的是JLoop標簽處的外層循環。
新聞熱點
疑難解答