第3課 Go控制,迴圈,選擇,跳躍陳述式

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
package mainimport (    "fmt")func main() {    /*        Go雖然保留了指標,但是其與其他程式設計語言不同的是,在Go中不支援        指標運算以及“->”運算子,而是直接採用“.”選擇符來操作指標目標        對象的成員        操作符“&”取變數地址,使用“*”通過指標間接訪問目標對象        預設值nil而非NULL    */    a := 1    var p *int = &a    fmt.Println(*p) //輸出1    //指標    /*        ++和--是作為語句而非運算式        運算式可以放在=右邊        所以現在a++只能作為單獨的一行    */    a--    fmt.Println(*p) //輸出0    if 1 < 2 { //左大括弧必須放在if同一行    } //if的一種用法    if a := 1; a > 1 { //初始化語句;條件陳述式    } //if的另一種用法,注意這個a的範圍只有在if語句塊中    //並且覆蓋上面的a,當if執行完後,a變成了外部語句的a    /*        迴圈語句for        -Go中只有for一個迴圈語句關鍵字,但是支援三種形式初        -始化和步進運算式可以是多個值        -條件陳述式每次迴圈都會被重新檢查,因此不建議在條件語        句中使用函數,盡量提前計算好條件並以變數或常量代替        -左大括弧必須和條件陳述式在同一行    */    fmt.Println("-----")    aa := 1    for {        aa++        if aa > 3 {            break        }        fmt.Println(aa)    }    fmt.Println("over")    //第一種形式    fmt.Println("-----")    for aa <= 3 {        aa++        fmt.Println(aa)    }    //第二種形式    fmt.Println("-----")    for i := 0; i < 3; i++ {        fmt.Println("第三種")    }    //第三種形式(步進運算式)    /*        選擇語句switch        -可以使用任何類型或運算式作為條件陳述式        -不需要寫break        -如果希望繼續執行下一個case,則需要使用fllthrough語句        -支援一個初始設定式(可以是並行方式),右側需跟分號        -左大括弧必須和條件陳述式在同一行    */    fmt.Println("-----")    b := 1    switch b {    case 0:        fmt.Println("a=0")    case 1:        fmt.Println("a=1")    default:        fmt.Println("None")    }    fmt.Println("-----")    switch bb := 1; { //這個bb的範圍也是代碼塊內    case bb >= 0:        fmt.Println("bb>=0")    case bb >= 1:        fmt.Println("bb>=1")    default:        fmt.Println("None")    }    fmt.Println("-----")    /*        跳躍陳述式goto,break,continue        -三個文法都可以配合標籤使用        -標籤名區分大小寫,若建立了標籤不使用會出現編譯錯誤        -break與continue配合標籤可用於多層迴圈的跳出        -goto是調整執行位置,與其它2個語句配合標籤的結果並不相同    */LABEL1:    for {        for i := 0; i < 10; i++ {            if i > 3 {                break LABEL1            }        }    }    fmt.Println("跳出迴圈!")    //使用break LABEL1 會跳出與LABEL1同一層級的迴圈,注意,與LABEL1同一層級的迴圈    //顯然如果用goto,會調整執行位置,無限迴圈下去    //如果用continue,也會跳出LABEL1一層級的迴圈,在這裡為無限迴圈,必須做如下調整:LABEL2:    for i := 0; i < 10; i++ {        for {            continue LABEL2            fmt.Println(i) //本條語句永遠不會執行        }    }    fmt.Println("跳出迴圈!")    //如果把contain換成goto,肯定結果還是無限迴圈!}

運行結果:
1
0
—–
2
3
over
—–
—–
第三種
第三種
第三種
—–
a=1
—–
bb>=0
—–
跳出迴圈!
跳出迴圈!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.