Golang的循環(huán)語句和循環(huán)控制語句詳解
一、循環(huán)語句
1. 普通循環(huán)
1)語法
for init; condition; post { }
- init(可選):給控制變量賦初值;
- condition(可選):控制條件(不填的時候等于
while True
); - post(可選):控制變量增量或減量;
2)舉例
1.求1到10的數字之和。
package main import "fmt" func main() { count := 0 for i := 0; i <= 10; i++ { count += i } fmt.Println("1到10的數字之和為:",count) }
執(zhí)行結果
1到10的數字之和為: 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的數字之和為:",count) }
執(zhí)行結果
count小于10時自相加的值為
3.Golang中沒有while循環(huán),可以通過省略condition來實現:
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)") } }
輸出結果
(1到10的數字之和)x10: 550
3. range循環(huán)
用于對字符串、數組、切片等進行迭代輸出元素:
package main import "fmt" func main() { strArray := []string{"a", "b","c"} //字符串數組 for i,v := range strArray { fmt.Println(fmt.Sprintf("下標為:%d 值為:%s", i,v)) } }
輸出結果
下標為: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 } } }
輸出結果
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("內層循環(huán)j: %d\n", j) break //不使用標記,則只會中斷該層循環(huán),不會中斷外層循環(huán) } } }
輸出結果
外層循環(huán)i: 1
內層循環(huán)j: 11
外層循環(huán)i: 2
內層循環(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("內層循環(huán)j: %d\n", j) break re //使用標記,中斷外層循環(huán) } } }
輸出結果
外層循環(huán)i: 1
內層循環(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í)行結果
a 的值為 : 1
a 的值為 : 2
a 的值為 : 4
在循環(huán)嵌套時,continue也可以指定跳過的循環(huán),用法與break一樣
3.goto-條件轉移
goto 可以直接轉移到指定代碼處進行執(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í)行goto跳出 goto LOOP } //a=3時不會執(zhí)行打印操作 fmt.Printf("a 的值為 : %d\n", a) } LOOP:fmt.Printf("a等于3;執(zhí)行goto跳出!") }
執(zhí)行結果
a 的值為 : 1
a 的值為 : 2
a等于3;執(zhí)行goto跳出!
不建議使用goto,容易造成代碼結構混亂
到此這篇關于Golang的循環(huán)語句和循環(huán)控制語句的文章就介紹到這了,更多相關go循環(huán)語句和循環(huán)控制語句內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!