go的流程控制
Bingo's Blog 2020-04-01 golang
# if else
if 表达式1{
分支1
}else if表达式{
分支2
}else{
}
可以在if表达式前面添加一个语句,根据变量值进行判断
# for(循环)
for 初始语句;条件表达式;结束语句{
循环体语句
}
for循环初始语句可以省略,但是初始分号必须写
func demo{
i:=0
for;i<10;i++{
fmt.Print(i)
}
}
初始语句和结束语句都可省略
func demo2{
i:=0
for i<10{
fmt.Println(i)
i++
}
}
以上用法相当于while循环
- 无限循环 for{ 循环语句 }
for循环可以通过break,goto,return,panic 强制退出
# for range(键值循环)
for range 遍历数组,切片,字符串,map以及通道(channel),通过for range遍历的返回值有以下规律
1.数组、切片、字符串返回索引和值
2.map返回键和值
3.通道(channel)只返回通道内的值
# switch case
func demo{
finger :=3
switch finger{
case 1:
fmt.Println('大拇指')
case 2:
fmt.Println('食指')
case 3:
fmt.Println('中指')
case 4:
fmt.Println('无名指')
case 5:
fmt.Println("小拇指")
default:
fmt.println("无效的输入")
}
}
go语言规定,每个swicth只能有一个default分支
- 一个分支可以有多个值,多个case值中间使用英文逗号隔开
func demo{
switch n: =7;n{
case 1,3,5,7{
fmt.Println("奇数")
}
case 2,4,6,8{
fmt.Println("偶数")
}
default:
fmt.Println(n)
}
}
- 分支还可以使用表达式,这时候switch语句后面不需要在跟判断变量,例如
func demo{
age :=30
swicth{
case age < 25:
fmt.Println("好好学习")
case age > 25 && age < 35:
fmt.Println("好好工作")
case age >60 :
fmt.Println("好好活着")
default:
fmt.Println("活着真好")
}
}
- fallthrough语法可以执行满足条件的case的下一个case
func demo{
index := 10
switch index {
case 100 :
print( "index 的值为 100")
fallthrough
case 10,15 :
print( "index 的值为 10 或 15")
fallthrough
case 5 :
print( "index 的值为 5")
default :
print( "默认 case")
}
}
# goto 跳转到指定标签
goto 语句能通过标签进行代码间的无条件跳转,可以快速跳出循环,避免重复退出
func gotoDemo2() {
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if j == 2 {
// 设置退出标签
goto breakTag
}
fmt.Printf("%v-%v\n", i, j)
}
}
return
// 标签
breakTag:
fmt.Println("结束for循环")
}