在不少實際業務中有許多具有規律性的重複操作,因此在程序中就需要重複執行某些語句 Go 語言提供了以下幾種類型循環處理語句
for循環
package main
import "fmt"
func main() {
// for語言結構 for init; condition; post { }
// 先對錶達式init 賦初值 就是 i:= 0
// 判別表達式 condition 是真,則執行循環體內語句,然後執行 post,進入第二次循環
// 再次判別表達式 condition 是假,終止for循環
sum := 0
for i := 0; i <= 10; i++ {
sum += i
}
fmt.Println(sum)
// for 循環的 range 格式可以對 slice、map、數組、字符串等進行迭代循環
strings := []string{"犀利的大熊", "犀利的二熊"}
stringsMap := map[string]string{
"犀利": "大熊",
}
for key, value := range strings {
println(key, value)
}
for key, value := range stringsMap {
println(key, value)
}
// for循環類似於while格式
// 輸出 10 11 12 13 14
a := 10
for a < 15 {
fmt.Println(a)
a++
}
// 循環嵌套
var i, j int
for i = 0; i < 10; i++ {
for j = 10; j > 0; j-- {
fmt.Println(i + j)
}
}
}
循環控制語句 循環控制語句可以控制循環體內語句的執行過程 GO 語言支持以下幾種循環控制語句
break
package main
import "fmt"
func main() {
// break用法
// 用於循環語句中跳出當前循環,並開始執行循環之後的語句
a := 10
for a < 20 {
fmt.Println(a)
a++
if a > 15 {
break //
}
}
// 在 switch(開關語句)中在執行一條 case 後跳出語句的作用
// 在多重循環中,可以用標號 label 標出想 break 的循環
// 會退出標記的循環 退出兩層循環
b, c := 0, 0
re:
for b < 10 {
for c < 10 {
fmt.Println("b的值", b)
fmt.Println("c的值", c)
c++
if c > 5 {
break re
}
}
b++
}
// 只退出當前循環 退出一層循環
for b < 10 {
for c < 10 {
fmt.Println("b的值", b)
fmt.Println("c的值", c)
if c > 5 {
break
}
c++
}
b++
}
}
continue
package main
import "fmt"
func main() {
// 類似於break 語句。但是 continue 不是跳出循環,而是跳過當前循環執行下一次循環語句
// 跳出當前循環 進行下一次循環 continue 語句會觸發 for 增量語句的執行
// 下面例子輸出10、11、12、14
a := 10
for a < 15 {
if a == 13 {
a++
continue
}
fmt.Println(a)
a++
}
// 在多重循環中,可以用標號 label 標出想 continue 的循環
// 會跳過兩層循環
b, c := 0, 0
re:
for b < 4 {
for c < 4 {
if c == 1 {
c++
continue re
}
fmt.Println("b的值", b)
fmt.Println("c的值", c)
c++
}
fmt.Println("b的值", b)
fmt.Println("c的值", c)
b++
}
}
goto
無條件地轉移到過程中指定的行 通常與條件語句配合使用 可用來實現條件轉移, 構成循環,跳出循環體等功能
在結構化程序設計中一般不主張使用 goto 語句, 以免造成程序流程的混亂,使理解和調試程序都產生困難 不做過多描述