流程控制
条件语句
1 2 3 4 5 6 7 8 9
| if 条件1 { 逻辑代码1 } else if 条件2 { 逻辑代码2 } else if 条件 ... { 逻辑代码 ... } else { 逻辑代码 else }
|
选择语句
1 2 3 4 5 6 7 8 9 10 11 12
| switch 表达式 { case 表达式值1: 业务逻辑代码1 case 表达式值2: 业务逻辑代码2 case 表达式值3: 业务逻辑代码3 case 表达式值 ...: 业务逻辑代码 ... default: 业务逻辑代码 }
|
循环语句
只有for:四种用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| for initialisation; condition; post { code }
for condition { code }
for range_expression { code }
for { code }
|
defer 延迟调用
含有 defer
语句的函数,会在该函数将要返回之前,调用另一个函数。简单点说就是 defer
语句后面跟着的函数会延迟到当前函数执行完后再执行。
defer
不仅能够延迟函数的执行,也能延迟方法的执行。
- 使用
defer
只是延时调用函数,传递给函数里的变量,不应该受到后续程序的影响。
- 当一个函数内多次调用
defer
时,Go 会把 defer
调用放入到一个栈中,随后按照 后进先出 的顺序执行。
- defer 在 return 后调用
1 2 3 4 5 6 7 8 9 10 11 12
| package main
import "fmt"
func fun() { fmt.Println("fun函数...") }
func main() { defer fun() fmt.Println("main函数...") }
|
goto 无条件跳转
- 在 Go 语言中保留
goto
。goto
后面接的是标签,表示下一步要执行哪里的代码。
goto
语句与标签之间不能有变量声明,否则编译错误。编译下面的程序会报错。
1 2 3 4 5 6 7 8 9 10 11
| package main
import "fmt"
func main() { fmt.Println("1") goto label fmt.Println("2") label: fmt.Println("3") }
|