Go语言中的流程控制语句包括条件判断、循环和分支控制。以下是详细介绍:
1. 条件判断语句
if 语句
Go语言的 if
语句与其他语言类似,支持基本的条件判断。
Go
if 条件 {
// 执行代码
}
-
if-else
语句:Goif 条件 { // 执行代码 } else { // 执行代码 }
-
if-else if-else
语句:Goif 条件1 { // 执行代码 } else if 条件2 { // 执行代码 } else { // 执行代码 }
-
在
if
语句中可以带有一个初始化语句,用于在判断条件前执行一次。Goif 初始化语句; 条件 { // 执行代码 }
switch 语句
switch
语句用于简化多个条件的判断,通常比多个 if-else
更简洁。
Go
switch 表达式 {
case 值1:
// 执行代码
case 值2:
// 执行代码
default:
// 执行代码
}
-
switch
语句可以没有表达式,相当于switch true
,适合多个条件分支。Goswitch { case 条件1: // 执行代码 case 条件2: // 执行代码 default: // 执行代码 }
2. 循环语句
Go语言只有 for
一个循环关键字,但可以用于多种场景。
for 循环
基本的 for
循环形式:
Go
for 初始化语句; 条件; 后续操作 {
// 执行代码
}
例如:
Go
for i := 0; i < 10; i++ {
fmt.Println(i)
}
while 类似的循环
省略初始化和后续操作,可以实现类似 while
的效果。
Go
i := 0
for i < 10 {
fmt.Println(i)
i++
}
无限循环
省略条件,实现无限循环。
Go
for {
// 执行代码
}
for range 循环
用于遍历数组、切片、映射、字符串和通道。
Go
for 索引, 值 := range 集合 {
// 执行代码
}
例如,遍历数组:
Go
arr := []int{1, 2, 3, 4}
for i, v := range arr {
fmt.Println(i, v)
}
3. 跳转控制语句
break
用于提前结束循环。
Go
for i := 0; i < 10; i++ {
if i == 5 {
break
}
fmt.Println(i)
}
continue
用于跳过本次循环,继续下一次循环。
Go
for i := 0; i < 10; i++ {
if i%2 == 0 {
continue
}
fmt.Println(i)
}
goto
goto
可以直接跳转到代码中的指定标签。标签以英文冒号 :
结尾。
Go
i := 0
LOOP:
fmt.Println(i)
i++
if i < 5 {
goto LOOP
}
4. 特殊控制语句
defer
defer
用于延迟执行函数,通常用于资源清理。被 defer
的语句会在函数返回之前执行,并且按后进先出的顺序执行。
Go
func main() {
defer fmt.Println("世界")
fmt.Println("你好")
}
上面的代码会先输出"你好",再输出"世界"。
panic 和 recover
panic
用于引发异常,终止程序的正常执行。recover
用于捕获panic
,避免程序崩溃。
Go
func main() {
defer func() {
if r := recover(); r != nil {
fmt.Println("捕获到异常:", r)
}
}()
panic("出现了严重错误")
}