日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)GO教程:Go語言for(循環(huán)結(jié)構(gòu))

與多數(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