Golang的循環(huán)語句和循環(huán)控制語句詳解
一、循環(huán)語句
1. 普通循環(huán)
1)語法
for init; condition; post { }
- init(可選):給控制變量賦初值;
- condition(可選):控制條件(不填的時候等于
while True
); - post(可選):控制變量增量或減量;
2)舉例
1.求1到10的數(shù)字之和。
package main import "fmt" func main() { count := 0 for i := 0; i <= 10; i++ { count += i } fmt.Println("1到10的數(shù)字之和為:",count) }
執(zhí)行結(jié)果
1到10的數(shù)字之和為: 55
2.省略init和post:計算count小于10時自相加的值:
package main import "fmt" func main() { count := 1 for ; count < 10; { count += count } fmt.Println("count小于10時自相加的值為:",count) }
也可以省略;
號:
package main import "fmt" func main() { count := 1 for count < 10{ //省略分號 count += count } fmt.Println("1到10的數(shù)字之和為:",count) }
執(zhí)行結(jié)果
count小于10時自相加的值為
3.Golang中沒有while循環(huán),可以通過省略condition來實現(xiàn):
package main import "fmt" func main() { for { //省略condition fmt.Println("死循環(huán)") } }
2. 循環(huán)嵌套
package main import "fmt" func main() { for { //省略condition fmt.Println("死循環(huán)") } }
輸出結(jié)果
(1到10的數(shù)字之和)x10: 550
3. range循環(huán)
用于對字符串、數(shù)組、切片等進行迭代輸出元素:
package main import "fmt" func main() { strArray := []string{"a", "b","c"} //字符串?dāng)?shù)組 for i,v := range strArray { fmt.Println(fmt.Sprintf("下標(biāo)為:%d 值為:%s", i,v)) } }
輸出結(jié)果
下標(biāo)為:0 值為:a
下標(biāo)為:1 值為:b
下標(biāo)為:2 值為:c
二、循環(huán)控制語句
1.Break-中斷(跳出)循環(huán)
1)中斷(跳出)循環(huán)
寫一個死循環(huán),變量a
會一直加1,當(dāng)a的值大于3的時候則跳出循環(huán):
package main import "fmt" func main() { a := 1 for { a++ fmt.Printf("a 的值為 : %d\n", a) if a > 3 { /* 使用 break 語句跳出循環(huán) */ fmt.Printf("跳出循環(huán)") break } } }
輸出結(jié)果
a 的值為 : 2
a 的值為 : 3
a 的值為 : 4
跳出循環(huán)
2)指定想中斷(跳出)的循環(huán)(嵌套循環(huán)中使用)
使用標(biāo)號,可以指定想跳出的循環(huán)。
下面是未使用標(biāo)記,普通break中斷循環(huán),只會中斷當(dāng)前層循環(huán),不會中斷外層,外層打印的值始終為11:
package main import "fmt" func main() { for i := 1; i <= 2; i++ { fmt.Printf("外層循環(huán)i: %d\n", i) for j := 11; j <= 12; j++ { fmt.Printf("內(nèi)層循環(huán)j: %d\n", j) break //不使用標(biāo)記,則只會中斷該層循環(huán),不會中斷外層循環(huán) } } }
輸出結(jié)果
外層循環(huán)i: 1
內(nèi)層循環(huán)j: 11
外層循環(huán)i: 2
內(nèi)層循環(huán)j: 11
下面是使用標(biāo)記,指定中斷外層循環(huán),等于只循環(huán)執(zhí)行了一次:
package main import "fmt" func main() { re: for i := 1; i <= 2; i++ { fmt.Printf("外層循環(huán)i: %d\n", i) for j := 11; j <= 12; j++ { fmt.Printf("內(nèi)層循環(huán)j: %d\n", j) break re //使用標(biāo)記,中斷外層循環(huán) } } }
輸出結(jié)果
外層循環(huán)i: 1
內(nèi)層循環(huán)j: 11
2.Continue-跳過當(dāng)次循環(huán)
continue 是跳過當(dāng)次循環(huán)執(zhí)行后面的循環(huán),而非中斷循環(huán)
package main import "fmt" func main() { for a := 1; a < 5; a++ { if a == 3 { //a=3時執(zhí)行continue跳過 continue } //a=3時不會執(zhí)行打印操作 fmt.Printf("a 的值為 : %d\n", a) } }
執(zhí)行結(jié)果
a 的值為 : 1
a 的值為 : 2
a 的值為 : 4
在循環(huán)嵌套時,continue也可以指定跳過的循環(huán),用法與break一樣
3.goto-條件轉(zhuǎn)移
goto 可以直接轉(zhuǎn)移到指定代碼處進行執(zhí)行。
下面的代碼,當(dāng)a=3時,會跳出for循環(huán),直接執(zhí)行LOOP所在行的代碼:
package main import "fmt" func main() { for a := 1; a < 5; a++ { if a == 3 { //a等于3;執(zhí)行g(shù)oto跳出 goto LOOP } //a=3時不會執(zhí)行打印操作 fmt.Printf("a 的值為 : %d\n", a) } LOOP:fmt.Printf("a等于3;執(zhí)行g(shù)oto跳出!") }
執(zhí)行結(jié)果
a 的值為 : 1
a 的值為 : 2
a等于3;執(zhí)行g(shù)oto跳出!
不建議使用goto,容易造成代碼結(jié)構(gòu)混亂
到此這篇關(guān)于Golang的循環(huán)語句和循環(huán)控制語句的文章就介紹到這了,更多相關(guān)go循環(huán)語句和循環(huán)控制語句內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go中使用gjson來操作JSON數(shù)據(jù)的實現(xiàn)
本文主要介紹了Go中使用gjson來操作JSON數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Go?Wails開發(fā)桌面應(yīng)用使用示例探索
這篇文章主要為大家介紹了Go?Wails的使用示例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12Golang實現(xiàn)smtp郵件發(fā)送的示例代碼
這篇文章主要為大家詳細介紹了Golang實現(xiàn)smtp郵件發(fā)送的相關(guān)知識,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03詳解Go中如何進行進行內(nèi)存優(yōu)化和垃圾收集器管理
這篇文章主要為大家詳細介紹了Go中如何進行進行內(nèi)存優(yōu)化和垃圾收集器管理,文中的示例代碼講解詳細,具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解下2023-11-11golang?Gin上傳文件返回前端及中間件實現(xiàn)示例
這篇文章主要為大家介紹了golang?Gin上傳文件返回前端及中間件實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪2022-04-04Go?模塊在下游服務(wù)抖動恢復(fù)后CPU占用無法恢復(fù)原因
這篇文章主要為大家介紹了Go?模塊在下游服務(wù)抖動恢復(fù)后CPU占用無法恢復(fù)原因詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11