go語言中間的迴圈

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

在Go語言中只有很少的幾個控制結構,它沒有while或者do-while迴圈。

但是它有for、switch、if。而且switch接受像for那樣可選的初始化語句。下面來認識一下他們

一、if語句

Go語言中的if像下面這個樣子:

if x > 0 {    return y} else {    return x}

一般不需要加圓括弧,不過,如果你寫上,也是沒有問題的(親測,寫上圓括弧也可以的~~)。比如:

if (3>2) {        fmt.Println("test if")}else if true {        fmt.Println("test else if")}else{        fmt.Println("test else")}//輸出 test if

 

二、switch語句

Go的switch非常靈活。運算式不必是常量或整數。
而在java中switch後面的括弧裡面只能放int類型的值,注意是只能放int類型,但是放byte,short,char類型的也可以,

那是因為byte,short,shar可以自動提升(自動類型轉換)為int,也就是說,你放的byte,short,shar類型,然後他們會自動轉換為int類型(寬化,自動轉換並且安全),
其實最後放的還是int類型!

switch語句執行的過程從上至下,直到找到匹配項,匹配項後面也不需要再加break(又跟java不一樣哦!)

func switchFuncString(a string) {    //字串    switch a {    case "test1":        fmt.Println("test1")    case "test2", "test3":        fmt.Println("testOhter")    default:        fmt.Println("NoTest")    }}func switchFuncInt(a int) {    //數字    switch a {    case 1:        fmt.Println("1")    case 2:        fmt.Println("2")    case 3:        fmt.Println("3")    }}func switchFuncBool(c byte) {    //switch後面什麼都沒有?它會匹配true    switch {    case '0' <= c && c <= '9':        fmt.Println(c - '0')    case 'a' <= c && c <= 'f':        fmt.Println( c - 'a' + 10)    case 'A' <= c && c <= 'F':        fmt.Println( c - 'A' + 10)    }}

但是如果,你就希望匹配之後,繼續匹配下面一條怎麼辦呢?還是有辦法的,使用“fallthrough”即可,例如:

func switchFuncInt(a int) {    //數字    switch a {    case 1:        fmt.Println("1")        fallthrough     case 2:        fmt.Println("2")    case 3:        fmt.Println("3")    }}

調用switchFuncInt(1),列印出1和2來。

 

三、for迴圈

Go語言的For迴圈油3中形式,只有其中的一種使用分號。

  1. for init; condition; post { }          和C 的for 一樣
  2. for condition { }                         和while 一樣
  3. for { }                                      和C 的for(;;) 一樣(死迴圈)

直接上代碼~~

package mainimport "fmt"func main() {    simpleFor()    var test string = "asdfghjkl"    fmt.Println(reverse([]byte(test)))}//列印0~9func simpleFor() {    for i := 0; i < 10; i++ {        fmt.Println(i)    }}// Reverse afunc reverse(a []byte) string {    //由於Go沒有逗號運算式,而++和--是語句而不是運算式,    //如果你想在for中執行多個變數,應當使用平行賦值。    for i, j := 0, len(a)-1; i < j; i, j = i+1, j-1 {        a[i], a[j] = a[j], a[i]    }    return string(a)}

 

分支、迴圈是很基礎的東西,所以有必要多練練手~~

下面來做兩個題目玩玩~~

1. 建立一個基於for的簡單的迴圈。使其迴圈10次,並且使用fmt 包列印出計數器的值。
2. 用goto改寫1的迴圈。保留字for不可使用。
3. 再次改寫這個迴圈,使其遍曆一個array,並將這個array列印到螢幕上。

代碼:

聯繫我們

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