站長資訊網
        最全最豐富的資訊網站

        golang流程控制語句有哪些

        流程控制語句:1、if語句,由一個布爾表達式后緊跟一個或多個語句組成;2、“if…else”語句,else中的表達式在布爾表達式為false時執行;3、switch語句,用于基于不同條件執行不同動作;4、select語句;5、for循環語句,語法“for k,v := range oldmap{newmap[k]=v}”;6、循環控制語句break、continue、goto。

        golang流程控制語句有哪些

        本教程操作環境:windows7系統、GO 1.18版本、Dell G3電腦。

        下面我們了解一下關于golang流程控制語句的基本內容。

        1、條件分支語句

        和c語言類似,相關的條件語句如下表所示:

        語句 描述
        if 語句 if 語句 由一個布爾表達式后緊跟一個或多個語句組成。
        if…else 語句 if 語句 后可以使用可選的 else 語句, else 語句中的表達式在布爾表達式為 false 時執行。
        switch 語句 switch 語句用于基于不同條件執行不同動作。
        select 語句 select 語句類似于 switch 語句,但是select會隨機執行一個可運行的case。如果沒有case可運行,它將阻塞,直到有case可運行。
        • if語句
          語法如下:

        if 布爾表達式 {    /* 在布爾表達式為 true 時執行 */ }
        登錄后復制

        • if-else語句

        if 布爾表達式 {    /* 在布爾表達式為 true 時執行 */ } else { 	/* 在布爾表達式為 false 時執行 */ }
        登錄后復制

        • switch語句
          其中的變量v可以是任何類型,val1val2可以是同類型的任意值,類型不局限為常量或者整數,或者最終結果為相同類型的表達式。

        switch v {     case val1:         ...     case val2:         ...     default:         ... }
        登錄后復制

        • select語句
          select 是 Go 中的一個控制結構,類似于用于通信的 switch 語句。每個 case 必須是一個通信操作,要么是發送要么是接收。它將會隨機執行一個可運行的 case。如果沒有 case 可運行,它將阻塞,直到有 case 可運行。一個默認的子句應該總是可運行的。

        select {     case communication clause  :        statement(s);           case communication clause  :        statement(s);     /* 你可以定義任意數量的 case */     default : /* 可選 */        statement(s); }
        登錄后復制

        注意:

        • 每個case必須都是一個通信
        • 所有channel表達式都會被求值,所有被發送的表達式都會被求值
        • 如果任意某一個通信都可以,它就執行,其他就忽略
        • 如果有多個case都可以運行,select就會隨機挑選一個來執行。
        • 如果沒有一個case可以被運行:如果有default子句,就執行default子句,select將被阻塞,直到某個通信可以運行,從而避免饑餓問題。

        2、循環語句

        2.1 循環處理語句

        與多數語言不同的是,Go語言中的循環語句只支持 for 關鍵字,而不支持 while 和 do-while 結構,關鍵字 for 的基本使用方法與C語言和 C++ 中非常接近。

        go中時使用for實現循環的,共有三種形式:

        語法
        和c語言中的for相同 for init; condition; post {}
        和c語言中的while相同 for condition{}
        和c語言中的for(;;)相同 for{}

        除此以外,for循環還可以直接使用range對slice、map、數組以及字符串等進行迭代循環,格式如下:

        for key, value := range oldmap { 	newmap[key] = value }
        登錄后復制

        2.2 循環控制語句

        控制語句 詳解
        break 中斷跳出循環或者switch語句
        continue 跳過當前循環的剩余語句,然后繼續下一輪循環
        goto語句 將控制轉移到被標記的語句

        1、break

        break主要用于循環語句跳出循環,和c語言中的使用方式是相同的。且在多重循環的時候還可以使用label標出想要break的循環。
        實例代碼如下:

        a := 0 for a<5 { 	fmt.Printf("%dn", a) 	a++ 	if a==2 { 		break; 	} } /* output 0 1 2 */
        登錄后復制

        2、continue

        Go 語言的 continue 語句 有點像 break 語句。但是 continue 不是跳出循環,而是跳過當前循環執行下一次循環語句。在多重循環中,可以用標號 label 標出想 continue 的循環。
        實例代碼如下:

            // 不使用標記     fmt.Println("---- continue ---- ")     for i := 1; i <= 3; i++ {         fmt.Printf("i: %dn", i)             for i2 := 11; i2 <= 13; i2++ {                 fmt.Printf("i2: %dn", i2)                 continue             }     }  /* output i: 1 i2: 11 i2: 12 i2: 13 i: 2 i2: 11 i2: 12 i2: 13 i: 3 i2: 11 i2: 12 i2: 13 */      // 使用標記     fmt.Println("---- continue label ----")     re:         for i := 1; i <= 3; i++ {             fmt.Printf("i: %d", i)                 for i2 := 11; i2 <= 13; i2++ {                     fmt.Printf("i2: %dn", i2)                     continue re                 }         }  /* output i: 1 i2: 11 i: 2 i2: 11 i: 3 i2: 11 */
        登錄后復制

        3、goto

        goto語句主要是無條件轉移到過程中指定的行。goto語句通常和條件語句配合使用,可用來實現條件轉移、構成循環以及跳出循環體等功能。但是并不主張使用goto語句,以免造成程序流程混亂。
        示例代碼如下:

        var a int = 0 LOOP: for a<5 { 	if a == 2 { 		a = a+1 		goto LOOP 	} 	fmt.Printf("%dn", a) 	a++ }  /* output: 0 1 2 3 4 */
        登錄后復制

        以上代碼中的LOOP就是一個標簽,當運行到goto語句的時候,此時執行流就會跳轉到LOOP標志的哪一行上。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 91精品国产高清久久久久久91| 久久亚洲精品视频| 国产乱码精品一区二区三区四川人| 久久久久这里只有精品| 久久99国产精品久久久 | 精品国产VA久久久久久久冰| 精品午夜国产人人福利| 97久久精品人人澡人人爽| 国产成人精品日本亚洲18图| 精品日韩亚洲AV无码| 在线观看91精品国产网站| 精品久久人人妻人人做精品| 88国产精品欧美一区二区三区| 99精品一区二区三区无码吞精| 久久精品一本到99热免费| 中文字幕精品一区二区精品| 欧洲精品码一区二区三区免费看| 国产亚洲精品高清在线| 97精品人妻一区二区三区香蕉 | 老司机67194精品线观看| 亚洲精品无码专区久久同性男| 免费精品精品国产欧美在线欧美高清免费一级在线 | 欧美国产亚洲精品高清不卡| 国产三级精品三级在线专区1 | 精品亚洲成a人片在线观看| 伊人久久精品影院| 亚洲中文久久精品无码ww16| 一区二区国产精品| 无码人妻精品一区二区三区66| 亚洲精品自在在线观看| 中文字幕久久精品无码| 日韩精品少妇无码受不了| 久久香蕉国产线看观看精品yw| 久久99国产乱子伦精品免费| 国产乱子伦精品无码码专区| 国产成人精品高清在线观看93| 8x福利精品第一导航| 免费精品99久久国产综合精品 | 91精品久久久久久无码| 国产成人精品久久亚洲高清不卡 | 精品视频在线观看你懂的一区|