Go基本語句

來源:互聯網
上載者:User

標籤:

遞增遞減語句
在GO中,++與--是作為語句而並不是作為運算式

package mainimport  "fmt"func main() {        a:=1            //a=a++   //語句而非運算式,只能放左邊,go裡不支援        a++        fmt.Println(a)  }

判斷語句if
條件運算式沒有括弧,塊需加花括弧 即使只有一行
支援一個(只支援1個)初始設定式(可以是並行方式)
左大括弧必須和條件陳述式或者else在同一行
支援單行模式
初始化語句中的變數為block層級,同時隱藏外部同名變數

 

package mainimport  "fmt"func main() {        a:=10        if a,b:=2,3; a<b {           //左大擴號必須和if同行  if a:=2,b:=3; a<b寫法錯誤,只支援1個初始設定式                fmt.Println(a)  //        }         fmt.Println(a) //只在if語句塊裡有值 10           fmt.Println(b)  //undefined: b }

 

迴圈語句for
GO只有for一個迴圈語句關鍵字,但支援3種形式
初始化和步進運算式可以是多個值
條件陳述式每次迴圈都會被重新檢查,因此不建議在條件陳述式中使用函數,盡量提前計算好條件並以變數或常量代替
左大括弧必須和條件陳述式在同一行(格式化)
第一種形式

 

package mainimport  "fmt"func main() {     a:=0     for{        a++        if a>10{                break        }        fmt.Println(a)             }   }

 

第二種形式

 

func main() {     a:=0     for a<10{        a++        fmt.Println(a)     }   }

 

第三種形式

func main() {     for a:=0;a<10;a++{        fmt.Println(a)     }   }

注意

 

func main() {        s:="abcd"     for a:=0;a<len(s);a++{  //每次迴圈 都會執行len(s) 建議賦值給變數再放在for判斷運算式裡        fmt.Println(a)     }   }

分支選擇 switch語句
可以使用任何類型或運算式作為條件陳述式
不需要寫break,一旦條件符合自動終止
如希望繼續執行下一個case,需使用fallthrough語句
支援一個初始設定式(可以是並行式),右側需跟分號
左大括弧必須和條件陳述式在同一行

 

func main() {        a:=1        switch a{        case 0:                fmt.Println("a=0")        case 1:                fmt.Println("a=1")                fmt.Println("ok")        default:                fmt.Println("default")        } }

 

func main() {        a:=1        switch {        case a>=0:                fmt.Println("a=0")        case a>=1:                fmt.Println("a=1")                fmt.Println("ok")        default:                fmt.Println("default")        } }//只輸出a=0 自動break
func main() {        a:=1        switch {        case a>=0:                fmt.Println("a=0")                fallthrough        case a>=1:                fmt.Println("a=1")                fmt.Println("ok")                fallthrough        default:                fmt.Println("default")        } }/*輸出a=0a=1okdefault*/
func main() {        switch a:=1; {        case a>=0:                fmt.Println("a=0")                fallthrough        case a>=1:                fmt.Println("a=1")                fmt.Println("ok")                fallthrough        default:                fmt.Println("default")        }         fmt.Println(a);// undefined: a}//輸出結果同上

跳躍陳述式goto,break,continue
三個文法都可以配合標籤使用
標籤名區分大小寫,若不使用會造成編譯錯誤
break與continue配合標籤可用於多層迴圈的跳出
goto是調整執行位置

 

 

func main() {  // LABEL1:  for{    for i:=0;i<10;i++{      fmt.Println(i);      if i>3{        // break LABEL1        goto LABEL2      }    }  }  LABEL2:}

 

 

func main() {  LABEL1:  for i:=0;i<10;i++{    for {      continue LABEL1      fmt.Println(i);    }    fmt.Println(i);  }  fmt.Println("ok!")}//只輸出ok!
func main() {  LABEL1:  for i:=0;i<10;i++{    for{      fmt.Println(i)      continue LABEL1    }  }}//輸出0-9//continue換成goto 會死迴圈輸出0

 

Go基本語句

聯繫我們

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