golang筆記——流程式控制制

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

條件陳述式

  if ... else if ... else 語句,如:

if num > 100{    fmt.Println(">100")    } else if 0 < num {    fmt.Println("<0")} else {    fmt.Println("0<<num<<100")}

 

迴圈語句

  GO語言中的 switch 語句分為兩種,一種是運算式 switch 語句,和其它語言中的 switch 使用方法相同;另一種是類型判斷 switch 語句,它類似於類型斷言,但使用 type 關鍵字來充當被判斷的類型。

  運算式 switch 樣本如下:

    //運算式 switch    switch content := getContent(); content {    default:        fmt.Println("Unknow language")    case "Lua":        break    case "Python":        fmt.Println("python")    case "C", "C++", "Java":        fmt.Println("A compiled language")    }

  類型判斷 switch 語句樣本如下:

    v := "3"    switch interface{}(v).(type) {    case string:        log.Printf("Thie string is '%s'.\n", v)    case int, uint, int8, uint8, int16, uint16:        log.Printf("Thie integer is %d.\n", v)    default:        log.Printf("Unsupported value.(type=%T)\n", v)    }

  此外,switch 語句還可以實現串聯 if 語句的替代方案,可以使代碼看起來更清晰易讀,在 switch 運算式缺失的情況下, switch 判定目標會被視為布爾類型,第一個返回 true 的 case 運算式將會被執行,如:

    switch {    case num > 100:        log.Println(">100")    case num < 0:        log.Println("<0")    default:        log.Println("0<<num<<100")    }

  for語句有三種用法,一是常規用法,結構先後是初始化子句、條件、後置子句,如:

    sum := 0    for i := 0; i < 100; i++ {        sum += i    }

  二是類似其它語言中 while 的作用,注意GO語言中沒有while迴圈,如:

    i := 0    for i < 100 {        i += 2    }

  三是類似其它語言中 foreach 的作用,用來迭代數組和字典等類型,如:

    m := map[string]int{"A": 1, "B": 2}    for k, _ := range m {        log.Print(k)    }

  注意:if/for/switch 語句都可以接受一個可選的初始化子句; break\continue\goto 語句都可以跳轉到指定標記,標記的定義使用 "標識符:" 的形式。

 

goto語句

  goto語句只能配合標記來執行,跳轉到指定位置,該語句在其它語言中很有爭議,一般為了代碼可讀性都不推薦使用。

 

defer語句

  GO語言特有的一個流程式控制制語句,它用來預定對一個函數的調用。它只能出現在一個函數中(假設是A函數),且只能調用另一個函數(假設是B函數),意味著在A函數結束返回時,延遲調用B函數,一般用於開啟檔案時的資源清理等工作。如果一個函數內部調用多個 defer 語句,則遵循後進先出的原則。defer 語句後面可以跟著匿名函數,來快速實現一些臨時的功能。defer 調用的函數可以使用的變數,可以是通過參數傳進來的,也可以是上下文中可以調用的變數,如果是傳參進來的,則會立即被求值,如果是上下文中的變數,則不會立即被求值,而是取在 defer 函數調用時的值,這一點要注意。

 

異常處理語句

  switch 語句

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.