Go語言3-程序控制

人們將程序定義爲數據結構+算法,而算法的實現通常都是靠程序控制來完成,因此,程序控制對於程序來說,是非常重要的部分。接下來我們來通過本文來了解下Go爲我們提供的程序控制。

1、條件語句

 關鍵字:if、else、else if
     if i := 0; x == i {  //註釋1
          return 0
     } else if x == 1 {  //註釋2
          return 1
     } else {
          return -1
     }
     註釋1:這裏可以自定義局部變量,作用域爲這個if-else體結束。
     註釋2if塊不定義局部變量時與這種寫法類似,如果這裏也定義局部變量,則註釋1處的
           if語句塊無法引用到這裏定義的變量,else語句塊可以引用。
 切記:不需要()來包圍條件語句,{}爲必須的,且必須與關鍵字同行

2、選擇語句

 關鍵字:switch、case、fallthrough
     switch i {                 //註釋1
     case 0:                    //註釋2
          fmt.Printf("0")
     case 1:                    //註釋3
          fallthrough
     case 2, 3:                 //註釋4
          fmt.Printf("2,3,4")
     default:                   //註釋5
          fmt.Printf("Default")
     }
釋1:{須與switch同行,這裏可以有一個初始化表達式,右側需要跟分號
     注釋2:不需要明確的break來退出,默認自動退出
     注釋3:當i=1時輸出2,3fallthrough關鍵字會繼續執行緊跟的下一個case代碼
     注釋4:可以一個case中寫多個滿足條件(i爲2,3中的一個即可)
     注釋5:以上的都不匹配時執行
 switch後面的表達式不是必需的,這種結構與多個if...else if的邏輯作用等同
     switch {                   //註釋1
     case 0 == i:
          fmt.Printf("0")
     case 1 == i:
          fallthrough
     case 2 == i || 3 == i:
          fmt.Printf("2,3,4")
     default:
          fmt.Printf("Default")
     }
     註釋1:{這裏可以有一個初始化表達式,右側需要跟分號,如本行可寫爲switch i := 0; {

3、循環語句

 關鍵字:for、range、break、continue
 1)for語句的多種格式
 格式1:
     sum := 0
     for i := 0; i < 10; i++ { //註釋1
          sum += i
     }
     註釋1:不需要()來包圍條件語句,{}爲必須有的,且{必須與關鍵字同行
 格式2:
     i, sum := 0, 0
     for {                    //註釋1
          if i == 10 {
               break
          }
          sum += i
          i++
     }
     註釋1:類似於Java中的while(true)寫法
 格式3:
     i, sum := 0, 0
     for i < 10 {
          sum += i
          i++
     }
 2)數組或切片(後面講解)的兩種遍歷方式
 寫法1:
     mySlice := []int{1, 2, 3, 4}              //註釋1
     sum := 0                                  
     for i, l := 0, len(mySlice); i < l; i++ { //註釋2
          sum += mySlice[i]
     }
     註釋1:定義一個slice
     註釋2:賦值語句支持多重賦值(僅支持平行多重賦值)
 寫法2:
     for i, v := range mySlice {               //註釋1
          sum += v                             //註釋2
          //sum +=mySlice[i]
     }
    註釋1range有兩個返回值,i爲索引,v爲值。當對map(後面講解)進行遍歷時,range的返回值分別爲key,value
    註釋2:這裏要注意i沒有使用,編譯錯誤,請使用_代替

4、跳轉語句

 關鍵字:goto,其實break及continue也有跳轉的功能
 三個語法都可以配合標籤使用,標籤區分大小寫
 goto     標籤名:調整程序執行位置,標籤可以在語句之後定義
 break    標籤名:結束與標籤同級的for循環,標籤必須在語句之前定義
 continue 標籤名:結束與標籤同級的for循環,標籤必須在語句之前定義
     Label1:                             //定義名爲"Label1"的標籤
          for {                          //無限循環
               for i := 0; i < 10; i++ {  
                    if i > 3 {
                         break Label1    //直接結束Label1同級的for
                    }
               }
          }
 goto、continue的使用大體類似

一路過來,我們發現其實Go是一門非常簡單的語言,有其它編程語言基礎同學看完這幾篇博文觸類旁通的就懂了,僅僅寫法上的差異,別急,後面的文章將會介紹些Go比較獨有的特性。

無聞(unknow)《Go編程基礎》
許式偉的 《Go語言編程》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章