首頁  >  文章  >  後端開發  >  go語言中跳轉語句有哪些

go語言中跳轉語句有哪些

青灯夜游
青灯夜游原創
2022-12-26 16:33:594612瀏覽

跳轉語句有:1、break語句,用於退出迴圈或退出一個switch語句,讓程式繼續執行迴圈之後的程式碼,語法「break;」;2、continue語句用於退出本次循環,並開始下一次循環,語法「continue;」;3、與標籤結合跳到指定的標籤語句,語法「標籤:」;4、goto語句,用於無條件地轉移到程式中指定的行,語法「goto 標籤;... ...標籤: 表達式;」。

go語言中跳轉語句有哪些

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

Go 流程控制中的跳轉語句

break 與continue 語句

和其他程式語言一樣,Go 語言支援在迴圈語句中透過break 語句跳出循環,透過continue 語句進入下一個迴圈。

關於break 的基本使用範例我們在上篇教學中已經示範過,break 的預設作用範圍是該語句所在的最內部的迴圈體:

arr := [][]int{{1,2,3},{4,5,6},{7,8,9}}
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        num := arr[i][j]
        if j > 1 {
            break
        }
        fmt.Println(num)
    }
}

例如這裡的 break 的意義是在 j > 1 時退出最內部的循環,否則列印目前位置的數字。

continue 則用來忽略剩餘的迴圈體而直接進入下一個迴圈的過程:

arr := [][]int{{1,2,3},{4,5,6},{7,8,9}}
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        num := arr[i][j]
        if j > 1 {
            break
        } else {
            continue
        }
        fmt.Println(num)
    }
}

如果我們這樣改寫程式的話,上述程式碼不會印任何值,因為 continue 語句會忽略後續程式碼直接進入下一個循環。

標籤

Go 語言的 break 和 contine 與其他語言的不同之處在於支援與標籤結合跳到指定的標籤語句,從而改變這兩個語句的預設跳轉邏輯,標籤語句透過標籤:進行宣告:

arr := [][]int{{1,2,3},{4,5,6},{7,8,9}}
ITERATOR1:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        num := arr[i][j]
        if j > 1 {
            break ITERATOR1
        }
        fmt.Println(num)
    }
}

這樣一來,原本退出目前迴圈體的 break 語句現在改為跳到 ITERATOR1 標籤對應的位置,所以對應的列印結果是:

1
2

因為此時 break 會直接跳出外層循環,如果把 break 改成 continue 則列印結果如下:

1
2
4
5
7
8

goto 語句

goto 語句被多數語言學者所反對,告誡大家不要使用,因為很容易造成程式碼邏輯混亂,進而導致不易發現的bug。但Go 語言仍然支援goto 關鍵字,goto 語句的語意非常簡單,就是跳到本函數內的某個標籤,如:

arr := [][]int{{1,2,3},{4,5,6},{7,8,9}}

for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        num := arr[i][j]
        if j > 1 {
            goto EXIT
        }
        fmt.Println(num)
    }
}   

EXIT:
fmt.Println("Exit.")

當第一次滿足 j > 1 的條件時,程式碼就會跳到 EXIT 標籤指定的位置,繼續後續程式碼執行,所以上述程式碼的輸出是:

1
2
Exit.

【相關推薦: Go影片教學程式教學

以上是go語言中跳轉語句有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn