一、条件
Go语言中提供了if-else的条件判断
1. 语法
if-else语句基本语法为:
if condition {
...
} else if condition2 {
...
} else {
...
}
2. 变体
Go语言允许我们在 if 后面再执行一个语句,然后再做判断,语法为:if statement ; condition {}
上面的语法意思是,先执行statement,再判断condition,实例如下:
if num:=10; num >= 10 { //先声明num变量并初始化为10;再判断条件
fmt.Println("num >= 10") //num的作用域仅限于这个if-else语句中
} else {
fmt.Println("num < 10")
}
二、循环语句
for循环是Go语言中唯一的循环语句,Go并不支持 while 和 do while
1. 语法
语法为:for statement ; condition ; post {...} 如下:
for i:=1; i<=5; i++ {
fmt.Printf("[Count = %d]\n", i)
}
2. 终止循环
用break跳出循环
3. 跳出本次循环
用continue跳过本次循环
4. 无限循环
在for后面不写任何东西,直接跟循环体,可以无限循环,如下:
func main() {
count := 1
for { //如果不强制停止程序,这个循环会一直执行
fmt.Printf("[Count = %d]\n", count)
count++
time.Sleep(1*time.Second)
}
}
5. range
range关键字可以用来在for循环中遍历数组、切片、map等, 这里先让它露个脸,后面讲到切片、map的时候再细说。
三、switch语句
1. 标准用法
Go中的 switch-case 语句不需要写break,执行完一条case后的语句后就默认退出了
func main() {
dayOfWeek := 2
switch dayOfWeek {
case 1:
fmt.Println("[It's Mondy]")
case 2:
fmt.Println("[It's Tuesday]")
case 3:
fmt.Println("[It's Wednesday]")
case 4:
fmt.Println("[It's Thursday]")
case 5:
fmt.Println("[It's Friday]")
case 6:
fmt.Println("[It's Saturday]")
case 0:
fmt.Println("[It's Sunday]")
default:
fmt.Println("[Error]")
}
}
2. case — 多个表达式
case 后面可以写上多个表达式,如下:
func main() {
dayOfWeek := 2
switch dayOfWeek {
case 1, 2, 3, 4, 5 :
fmt.Println("[It's Working Day]")
case 6, 0:
fmt.Println("[It's Weekend]")
default:
fmt.Println("[Error]")
}
}
3. switch — 没有表达式
switch后面可以不写表达式,如下:
func main() {
dayOfWeek := 2
switch {
case dayOfWeek >= 1 && dayOfWeek <= 5 :
fmt.Println("[It's Working Day]")
case dayOfWeek == 0 || dayOfWeek == 6:
fmt.Println("[It's Weekend]")
default:
fmt.Println("[Error]")
}
}
4. fallthrough — 继续执行
顾名思义,fallthrough的作用是让 switch-case 在执行一个case后的语句之后,继续执行,它有以下规则:
-- fallthrough必须写在case语句中的最后一行
-- 仅仅会执行下面一个case,而不是全部执行
-- 不会判断下面一个case的condition条件,直接执行