Go-流程控制
在golang语言中有丰富的流程控制方面的功能。包括条件控制语句、循环语句、跳转语句等
1 if条件控制语句
1.1 语法
if condition {
statement(s)
} else if condition {
statement(s)
} else {
statement(s)
}
//1 其中condition 为一个条件表达式,用于判断真假,结果必须为true或false
//2 如果条件为真则执行condition后面{}中的代码,
//3 如果条件为假则依次执行else if 判断直到第一个为真的condition 出现后,执行其后面{}中的代码,
//4 如果所有的condition都为假,则执行else 后面{}中的代码
//5 如果没有else 块,则条件都为假时不执行任何语句,跳过此if条件语句执行下面的代码
1.2 示例
package main
import "fmt"
func main() {
if a := 2; a > 3 {
fmt.Println("1")
} else if a > 2 {
fmt.Println("2")
} else {
fmt.Println("3")
}
fmt.Println("4")
}
------------输出
PS C:\Goproject\src\gocode\project01\main> go run .\test.go
3
4
PS C:\Goproject\src\gocode\project01\main>
2 switch 语句
2.1 语法
switch expression {
case value1,value2:
statement(s)
case value3,value4:
satatement(s)
...
default:
statement(s)
}
//1 expression是一个表达式,用于匹配case子句中的常量或变量。
//2 如果匹配成功,则执行对应的代码
//3 否则跳过该语句,匹配下一个case子句
//4 如果所有的case子句都未匹配成功,则执行default 后面的代码
//5 如果没有default子句,且都没有匹配,则不执行任何语句,跳过此switch条件语句
2.2 示例
package main
import "fmt"
func main() {
var grade int = 43
switch grade / 10 {
case 10:
fmt.Println("A")
case 9, 8:
fmt.Println("B")
case 7, 6:
fmt.Println("C")
default:
fmt.Println("D")
}
}
-------------输出
PS C:\Goproject\src\gocode\project01\main> go run .\test.go
D
PS C:\Goproject\src\gocode\project01\main>
2.3 switch使用注意
- expresstion 是一个表达式(常量值、变量、一个有返回值的函数都可以)
- case后的value值不能重复
- case后的各个值的数据类型,必须和switch的表达式返回的数据类型一致
- case后面可以带多个值,使用英文逗号分隔
- default子句不是必须的,位置也是随意的
- switch穿透,利用fallthrough关键字,如果在case语句块后面增加fallthrough,则会继续执行下一个case的代码,也叫switch穿透
switch穿透示例
package main
import "fmt"
func main() {
var grade int = 83
switch grade / 10 {
case 10:
fmt.Println("A")
case 9, 8:
fmt.Println("B")
fallthrough
case 7, 6:
fmt.Println("C")
default:
fmt.Println("D")
}
}
-----------输出
PS C:\Goproject\src\gocode\project01\main> go run .\test.go
B
C
PS C:\Goproject\src\gocode\project01\main>