C語言中文網 目錄
首頁 > Go語言教程 > 流程控制 閱讀:4,294

Go語言for(循環結構)

Go 語言中的所有循環類型均可以使用 for 關鍵字來完成。

基于語句和表達式的基本 for 循環格式如下:

for 初始語句;條件表達式;結束語句{
    循環體代碼
}

循環體不停地進行循環,直到條件表達式返回 false 時自動退出循環,執行 for 的}之后的語句。

for 循環可以通過 break、goto、return、panic 語句強制退出循環。for 的初始語句、條件表達式、結束語句的詳細介紹如下。

for 中的初始語句——開始循環時執行的語句

初始語句是在第一次循環前執行的語句,一般使用初始語句執行變量初始化,如果變量在此處被聲明,其作用域將被局限在這個 for 的范疇內。

初始語句可以被忽略,但是初始語句之后的分號必須要寫,代碼如下:
step := 2
for ; step > 0; step-- {
    fmt.Println(step)
}
這段代碼將 step 放在 for 的前面進行初始化,for 中沒有初始語句,此時 step 的作用域就比在初始語句中聲明 step 要大。

for 中的條件表達式——控制是否循環的開關

對每次循環開始前計算的表達式,如果表達式為 true,則循環繼續,否則結束循環。條件表達式可以被忽略,被忽略條件的表達式默認形成無限循環。

1) 結束循環時帶可執行語句的無限循環

下面代碼忽略條件表達式,但是保留結束語句,代碼如下:
var i int

for ; ; i++ {

    if i > 10 {
        break
    }
}
代碼說明如下:
  • 第 3 行,無須設置 i 的初始值,因此忽略 for 的初始語句。兩個分號之間是條件表達式,也被忽略,此時循環會一直持續下去;for 的結束語句為 i++,每次結束循環前都會調用。
  • 第 5 行,判斷 i 大于 10 時,通過 break 語句跳出 for 循環到第 9 行。

2) 無限循環

上面的代碼還可以改寫為更美觀的寫法,代碼如下:
var i int

for {

    if i > 10 {
        break
    }

    i++
}
代碼說明如下:
  • 第 3 行,忽略 for 的所有語句,此時 for 執行無限循環。
  • 第 9 行,將 i++ 從 for 的結束語句放置到函數體的末尾是等效的,這樣編寫的代碼更具有可讀性。

無限循環在收發處理中較為常見,但需要無限循環有可控的退出方式來結束循環。

3) 只有一個循環條件的循環

在上面代碼的基礎上進一步簡化代碼,將 if 判斷整合到 for 中,變為下面的代碼:
var i int

for i <= 10 {
    i++
}
在代碼第 3 行中,將之前使用 if i>10{} 判斷的表達式進行取反,變為判斷 i 小于等于 10 時持續進行循環。

上面這段代碼其實類似于其他編程語言中的 while,在 while 后添加一個條件表達式,滿足條件表達式時持續循環,否則結束循環。

for 中的結束語句——每次循環結束時執行的語句

在結束每次循環前執行的語句,如果循環被 break、goto、return、panic 等語句強制退出,結束語句不會被執行。

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo