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"} //字符串數(shù)組
for i,v := range strArray {
fmt.Println(fmt.Sprintf("下標為:%d 值為:%s", i,v))
}
}
輸出結(jié)果
下標為:0 值為:a
下標為:1 值為:b
下標為:2 值為:c
二、循環(huán)控制語句
1.Break-中斷(跳出)循環(huán)
1)中斷(跳出)循環(huán)
寫一個死循環(huán),變量a會一直加1,當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)中使用)
使用標號,可以指定想跳出的循環(huán)。
下面是未使用標記,普通break中斷循環(huán),只會中斷當前層循環(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 //不使用標記,則只會中斷該層循環(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
下面是使用標記,指定中斷外層循環(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 //使用標記,中斷外層循環(huán)
}
}
}
輸出結(jié)果
外層循環(huán)i: 1
內(nèi)層循環(huán)j: 11
2.Continue-跳過當次循環(huán)
continue 是跳過當次循環(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í)行。
下面的代碼,當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ù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08
Golang實現(xiàn)smtp郵件發(fā)送的示例代碼
這篇文章主要為大家詳細介紹了Golang實現(xiàn)smtp郵件發(fā)送的相關(guān)知識,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-03-03
詳解Go中如何進行進行內(nèi)存優(yōu)化和垃圾收集器管理
這篇文章主要為大家詳細介紹了Go中如何進行進行內(nèi)存優(yōu)化和垃圾收集器管理,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解下2023-11-11
golang?Gin上傳文件返回前端及中間件實現(xiàn)示例
這篇文章主要為大家介紹了golang?Gin上傳文件返回前端及中間件實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪2022-04-04
Go?模塊在下游服務(wù)抖動恢復后CPU占用無法恢復原因
這篇文章主要為大家介紹了Go?模塊在下游服務(wù)抖動恢復后CPU占用無法恢復原因詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11

