流程控制是对程序在不同条件下的执行顺序的控制。通俗来讲,就是不同的代码在什么情况下才执行,哪些先执行,哪些后执行。
一般来说,程序代码的执行是从上往下顺序执行,但它这并不准确,如果有流程控制语句,只有当控制语句中指定条件得到满足时才执行相应的代码。
流程控制语句主要有:条件语句(if/else)、循环语句(for)、选择语句(switch/case)
条件语句(if)
if
条件语句,条件语句返回的结果必须为bool
类型
var score = 80
if score >= 80 {
fmt.Println("优秀")
} else if score >= 60 {
fmt.Println("及格")
} else {
fmt.Println("不及格")
}
选择语句(switch)
switch
选择语句,从上至下,依次匹配,一旦匹配,不在向下匹配其他条件
var grade = "A"
switch grade {
case "A":
fmt.Println("优秀")
// break,go语言中自带break语句
case "B":
fmt.Println("良好")
case "C":
fmt.Println("及格")
default: // 如果前面的条件没有命中,则运行defalut里的语句
fmt.Println("不及格")
}
循环结果(for)
for
是一个循环控制结构的语句,由初始语句、条件控制语句和结尾语句构成。
// 从0打印到10
for i := 0; i <= 10; i++ {
fmt.Println(i)
}
当然,初始语句、条件控制语句和结尾语句都不是必须的,下面是一个省略初始语句的循环结构。
var j = 10
// 省略掉初始语句,从0打印到10
for ; j >= 0; j-- {
fmt.Println(j)
}
下面是没有初始语句和结尾语句的一个循环结构。
var k = 10
for k >= 0 { // 省略初始语句和结尾语句,类似其他语言的while语句
k--
fmt.Println(k)
}
不带任何条件的for
语句,但可以使用continue
跳过本次循环,break
终止循环。
var l = 0
for {
if l > 10 {
break // 终止for循环
}
if l == 4 {
continue // 跳过本次循环
}
fmt.Println(l)
l++
}
九九乘法表
for i := 1; i < 10; i++ {
for j := 1; j <= i; j++ {
fmt.Printf("%d x %d = %d ", j, i, j*i)
}
fmt.Println("")
}
输出结果:
1 x 1 = 1
1 x 2 = 2 2 x 2 = 4
1 x 3 = 3 2 x 3 = 6 3 x 3 = 9
1 x 4 = 4 2 x 4 = 8 3 x 4 = 12 4 x 4 = 16
1 x 5 = 5 2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25
1 x 6 = 6 2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30 6 x 6 = 36
1 x 7 = 7 2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35 6 x 7 = 42 7 x 7 = 49
1 x 8 = 8 2 x 8 = 16 3 x 8 = 24 4 x 8 = 32 5 x 8 = 40 6 x 8 = 48 7 x 8 = 56 8 x 8 = 64
1 x 9 = 9 2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45 6 x 9 = 54 7 x 9 = 63 8 x 9 = 72 9 x 9 = 81