本文小編為大家詳細(xì)介紹“golang流程控制語(yǔ)句怎么使用”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“golang流程控制語(yǔ)句怎么使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),鹽池網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:鹽池等地區(qū)。鹽池做網(wǎng)站價(jià)格咨詢:13518219792
流程控制語(yǔ)句:1、if語(yǔ)句,由一個(gè)布爾表達(dá)式后緊跟一個(gè)或多個(gè)語(yǔ)句組成;2、“if…else”語(yǔ)句,else中的表達(dá)式在布爾表達(dá)式為false時(shí)執(zhí)行;3、switch語(yǔ)句,用于基于不同條件執(zhí)行不同動(dòng)作;4、select語(yǔ)句;5、for循環(huán)語(yǔ)句,語(yǔ)法“for k,v := range oldmap{newmap[k]=v}”;6、循環(huán)控制語(yǔ)句break、continue、goto。
和c語(yǔ)言類似,相關(guān)的條件語(yǔ)句如下表所示:
語(yǔ)句 | 描述 |
---|---|
if 語(yǔ)句 | if 語(yǔ)句 由一個(gè)布爾表達(dá)式后緊跟一個(gè)或多個(gè)語(yǔ)句組成。 |
if…else 語(yǔ)句 | if 語(yǔ)句 后可以使用可選的 else 語(yǔ)句, else 語(yǔ)句中的表達(dá)式在布爾表達(dá)式為 false 時(shí)執(zhí)行。 |
switch 語(yǔ)句 | switch 語(yǔ)句用于基于不同條件執(zhí)行不同動(dòng)作。 |
select 語(yǔ)句 | select 語(yǔ)句類似于 switch 語(yǔ)句,但是select會(huì)隨機(jī)執(zhí)行一個(gè)可運(yùn)行的case。如果沒(méi)有case可運(yùn)行,它將阻塞,直到有case可運(yùn)行。 |
if語(yǔ)句
語(yǔ)法如下:
if 布爾表達(dá)式 {
/* 在布爾表達(dá)式為 true 時(shí)執(zhí)行 */
}
if-else語(yǔ)句
if 布爾表達(dá)式 {
/* 在布爾表達(dá)式為 true 時(shí)執(zhí)行 */
} else {
/* 在布爾表達(dá)式為 false 時(shí)執(zhí)行 */
}
switch語(yǔ)句
其中的變量v
可以是任何類型,val1
和val2
可以是同類型的任意值,類型不局限為常量或者整數(shù),或者最終結(jié)果為相同類型的表達(dá)式。
switch v {
case val1:
...
case val2:
...
default:
...
}
select語(yǔ)句
select 是 Go 中的一個(gè)控制結(jié)構(gòu),類似于用于通信的 switch 語(yǔ)句。每個(gè) case 必須是一個(gè)通信操作,要么是發(fā)送要么是接收。它將會(huì)隨機(jī)執(zhí)行一個(gè)可運(yùn)行的 case。如果沒(méi)有 case 可運(yùn)行,它將阻塞,直到有 case 可運(yùn)行。一個(gè)默認(rèn)的子句應(yīng)該總是可運(yùn)行的。
select {
case communication clause :
statement(s);
case communication clause :
statement(s);
/* 你可以定義任意數(shù)量的 case */
default : /* 可選 */
statement(s);
}
注意:
每個(gè)case必須都是一個(gè)通信
所有channel表達(dá)式都會(huì)被求值,所有被發(fā)送的表達(dá)式都會(huì)被求值
如果任意某一個(gè)通信都可以,它就執(zhí)行,其他就忽略
如果有多個(gè)case都可以運(yùn)行,select就會(huì)隨機(jī)挑選一個(gè)來(lái)執(zhí)行。
如果沒(méi)有一個(gè)case可以被運(yùn)行:如果有default子句,就執(zhí)行default子句,select將被阻塞,直到某個(gè)通信可以運(yùn)行,從而避免饑餓問(wèn)題。
與多數(shù)語(yǔ)言不同的是,Go語(yǔ)言中的循環(huán)語(yǔ)句只支持 for 關(guān)鍵字,而不支持 while 和 do-while 結(jié)構(gòu),關(guān)鍵字 for 的基本使用方法與C語(yǔ)言和 C++ 中非常接近。
go中時(shí)使用for實(shí)現(xiàn)循環(huán)的,共有三種形式:
語(yǔ)法 | |
---|---|
和c語(yǔ)言中的for相同 | for init; condition; post {} |
和c語(yǔ)言中的while相同 | for condition{} |
和c語(yǔ)言中的for(;;) 相同 | for{} |
除此以外,for循環(huán)還可以直接使用range對(duì)slice、map、數(shù)組以及字符串等進(jìn)行迭代循環(huán),格式如下:
for key, value := range oldmap {
newmap[key] = value
}
控制語(yǔ)句 | 詳解 |
---|---|
break | 中斷跳出循環(huán)或者switch語(yǔ)句 |
continue | 跳過(guò)當(dāng)前循環(huán)的剩余語(yǔ)句,然后繼續(xù)下一輪循環(huán) |
goto語(yǔ)句 | 將控制轉(zhuǎn)移到被標(biāo)記的語(yǔ)句 |
1、break
break主要用于循環(huán)語(yǔ)句跳出循環(huán),和c語(yǔ)言中的使用方式是相同的。且在多重循環(huán)的時(shí)候還可以使用label標(biāo)出想要break的循環(huán)。
實(shí)例代碼如下:
a := 0
for a<5 {
fmt.Printf("%d\n", a)
a++
if a==2 {
break;
}
}
/* output
0
1
2
*/
2、continue
Go 語(yǔ)言的 continue 語(yǔ)句 有點(diǎn)像 break 語(yǔ)句。但是 continue 不是跳出循環(huán),而是跳過(guò)當(dāng)前循環(huán)執(zhí)行下一次循環(huán)語(yǔ)句。在多重循環(huán)中,可以用標(biāo)號(hào) label 標(biāo)出想 continue 的循環(huán)。
實(shí)例代碼如下:
// 不使用標(biāo)記
fmt.Println("---- continue ---- ")
for i := 1; i <= 3; i++ {
fmt.Printf("i: %d\n", i)
for i2 := 11; i2 <= 13; i2++ {
fmt.Printf("i2: %d\n", 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
*/
// 使用標(biāo)記
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: %d\n", i2)
continue re
}
}
/* output
i: 1
i2: 11
i: 2
i2: 11
i: 3
i2: 11
*/
3、goto
goto語(yǔ)句主要是無(wú)條件轉(zhuǎn)移到過(guò)程中指定的行。goto語(yǔ)句通常和條件語(yǔ)句配合使用,可用來(lái)實(shí)現(xiàn)條件轉(zhuǎn)移、構(gòu)成循環(huán)以及跳出循環(huán)體等功能。但是并不主張使用goto語(yǔ)句,以免造成程序流程混亂。
示例代碼如下:
var a int = 0
LOOP: for a<5 {
if a == 2 {
a = a+1
goto LOOP
}
fmt.Printf("%d\n", a)
a++
}
/*
output:
0
1
2
3
4
*/
以上代碼中的LOOP就是一個(gè)標(biāo)簽,當(dāng)運(yùn)行到goto語(yǔ)句的時(shí)候,此時(shí)執(zhí)行流就會(huì)跳轉(zhuǎn)到LOOP標(biāo)志的哪一行上。
讀到這里,這篇“golang流程控制語(yǔ)句怎么使用”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。