新聞中心
與多數(shù)語言不同的是,Go語言中的循環(huán)語句只支持 for 關(guān)鍵字,而不支持 while 和 do-while 結(jié)構(gòu),關(guān)鍵字 for 的基本使用方法與C語言和 C++ 中非常接近:

sum := 0
for i := 0; i < 10; i++ {
sum += i
} 可以看到比較大的一個不同在于 for 后面的條件表達(dá)式不需要用圓括號 () 括起來,Go語言還進(jìn)一步考慮到無限循環(huán)的場景,讓開發(fā)者不用寫無聊的 for(;;){}和do{} while(1);,而直接簡化為如下的寫法:
sum := 0
for {
sum++
if sum > 100 {
break
}
} 使用循環(huán)語句時,需要注意的有以下幾點:
- 左花括號
{必須與 for 處于同一行。 - Go語言中的 for 循環(huán)與C語言一樣,都允許在循環(huán)條件中定義和初始化變量,唯一的區(qū)別是,Go語言不支持以逗號為間隔的多個賦值語句,必須使用平行賦值的方式來初始化多個變量。
- Go語言的 for 循環(huán)同樣支持 continue 和 break 來控制循環(huán),但是它提供了一個更高級的 break,可以選擇中斷哪一個循環(huán),如下例:
for j := 0; j < 5; j++ {
for i := 0; i < 10; i++ {
if i > 5 {
break JLoop
}
fmt.Println(i)
}
}
JLoop:
// ... 上述代碼中,break 語句終止的是 JLoop 標(biāo)簽處的外層循環(huán)。
for 中的初始語句——開始循環(huán)時執(zhí)行的語句
初始語句是在第一次循環(huán)前執(zhí)行的語句,一般使用初始語句執(zhí)行變量初始化,如果變量在此處被聲明,其作用域?qū)⒈痪窒拊谶@個 for 的范圍內(nèi)。
初始語句可以被忽略,但是初始語句之后的分號必須要寫,代碼如下:
step := 2
for ; step > 0; step-- {
fmt.Println(step)
}這段代碼將 step 放在 for 的前面進(jìn)行初始化,for 中沒有初始語句,此時 step 的作用域就比在初始語句中聲明 step 要大。
for 中的條件表達(dá)式——控制是否循環(huán)的開關(guān)
每次循環(huán)開始前都會計算條件表達(dá)式,如果表達(dá)式為 true,則循環(huán)繼續(xù),否則結(jié)束循環(huán),條件表達(dá)式可以被忽略,忽略條件表達(dá)式后默認(rèn)形成無限循環(huán)。
1) 結(jié)束循環(huán)時帶可執(zhí)行語句的無限循環(huán)
下面代碼忽略條件表達(dá)式,但是保留結(jié)束語句,代碼如下:
var i int
for ; ; i++ {
if i > 10 {
break
}
}代碼說明如下:
- 第 3 行,無須設(shè)置 i 的初始值,因此忽略 for 的初始語句,兩個分號之間是條件表達(dá)式,也被忽略,此時循環(huán)會一直持續(xù)下去,for 的結(jié)束語句為 i++,每次結(jié)束循環(huán)前都會調(diào)用。
- 第 5 行,判斷 i 大于 10 時,通過 break 語句跳出 for 循環(huán)到第 9 行。
2) 無限循環(huán)
上面的代碼還可以改寫為更美觀的寫法,代碼如下:
var i int
for {
if i > 10 {
break
}
i++
}代碼說明如下:
- 第 3 行,忽略 for 的所有語句,此時 for 執(zhí)行無限循環(huán)。
- 第 9 行,將 i++ 從 for 的結(jié)束語句放置到函數(shù)體的末尾是等效的,這樣編寫的代碼更具有可讀性。
無限循環(huán)在收發(fā)處理中較為常見,但需要無限循環(huán)有可控的退出方式來結(jié)束循環(huán)。
3) 只有一個循環(huán)條件的循環(huán)
在上面代碼的基礎(chǔ)上進(jìn)一步簡化代碼,將 if 判斷整合到 for 中,變?yōu)橄旅娴拇a:
var i int
for i <= 10 {
i++
} 在代碼第 3 行中,將之前使用 if i>10{} 判斷的表達(dá)式進(jìn)行取反,變?yōu)榕袛?i 小于等于 10 時持續(xù)進(jìn)行循環(huán)。
上面這段代碼其實類似于其他編程語言中的 while,在 while 后添加一個條件表達(dá)式,滿足條件表達(dá)式時持續(xù)循環(huán),否則結(jié)束循環(huán)。
for 中的結(jié)束語句——每次循環(huán)結(jié)束時執(zhí)行的語句
在結(jié)束每次循環(huán)前執(zhí)行的語句,如果循環(huán)被 break、goto、return、panic 等語句強制退出,結(jié)束語句不會被執(zhí)行。
本文標(biāo)題:創(chuàng)新互聯(lián)GO教程:Go語言for(循環(huán)結(jié)構(gòu))
分享URL:http://www.5511xx.com/article/cdhphie.html


咨詢
建站咨詢
