流程控制的作用
选择:根据条件转到不同的执行序列
循环:根据条件反复执行某个序列。当然每次执行的输入输出结果可能不一样
跳转:根据条件返回某个执行语句。
Go 语言支持一下几种流程控制语句
条件语句:关键字 if else 和else if
选择语句:关键字 switch case 和 select
循环语句:关键字 for range
跳转语句:goto
另外,为了满足控制需求,还有关键字: break continue和 fallthrough
条件语句
// 示例
if a < 5 {
return 0
}else{
return 1
}
注意点
条件语句不需要使用括号将条件包含起来。
不论语句体内有多少语句,花括号{}都是必须存在的。
左花括号必须和if或是else处于同一行
条件语句可以使用 ; 间隔
在有返回值的函数中,不允许将return 包含在 if……else……结构中
选择语句
switch i {
case 0:
fmt.Printf("0")
case 1:
fmt.Printf("1")
case 2:
fallthrough
case 3:
fmt.Printf("3")
default:
fmt.Printf("Default")
}
// 结果:
i = 0 out 0
i = 1 out 1
i = 2 out 3
i = 3 out 3
i = 4 out Default
注意点
左花括号必须和switch在一行
条件表达式不限制为常量或是整数
单个case中,可以出现多个结果选项
不需要用break来明确退出case
明确添加fallthrough后,会继续执行紧跟的笑一个case,如示例中的i=2返回了3
可以不设定switch之后的条件表达式。
循环语句
go语言支持for循环,不支持 while
// 示例
sum := 0
for i :=0;i <10; i++ {
sum++
}
注意点
for 循环后面的条件表达式不需要用圆括号括起来。
左花括号必须和for在同一行
for 循环允许在循环条件中定义和初始化变量,但是 Go不支持以 逗号 为间隔的多赋值,必须使用平行赋值的方式, 初始化多个变量。
for 支持 continue break来控制循环。
for 配合 range 可以用于读取 slice 和map的数据
for k,v := range map{
fmt.Println("map's key:",k)
fmt.Println("map's val:",v)
}
go 支持 多返回值 对于 声明而未被调用的变量,编译的时候,会报错。这时候,可以使用 _ 来丢弃
for _,v := range map{
fmt.Println("map's val:",v)
}
跳转语句
goto 关键字,就是跳转到本函数内的某个标签
//示例
func myfunc(){
i := 0
HERE: // 标签名是大小写敏感的。
fmt.Println(i)
i++
if i < 10 {
goto HERE
}
}