在不少实际业务中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句 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 语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难 不做过多描述