程序的流程控制主要包括三种不同的结构,分别是顺序结构、选择结构和循环结构。
² 顺序结构最为简单,程序执行时,按照语句的顺序自上而下依次执行。
² 选择结构是根据条件表达式的结果选择执行某些语句。
² 循环结构是重复执行执行某些语句。
3.1 选择结构 3.1.1 if语句的语法:// 1
if condition {
...
}
// 2
if condition {
...
} else {
...
}
// 3
if condition {
...
} else if condition {
...
}
// 4
if condition {
...
} else if condition {
...
} else {
...
}
注意事项:
不需要使用括号()将条件包含起来。
无论语句体内有几条语句,花括号{}都必须存在。
左花括号{必须与if或else同处一行,否则有编译器错误
else必须和上一个语句体结束的右花括号}同处一行,否则有编译错误
在if之后可以添加变量初始化语句,但需要使用分号;间隔
惯用法:if 语句条件前面可以前置一条初始化语句,而go语言中的函数可以返回多个值,有很多函数第二个返回值是 error 类型,则我们可以通过
if v, err := func(); err == nil {
//逻辑语句
}
四种不同if结构的案例如下:
package main
import "fmt"
func main() {
fmt.Println("请输入您的成绩(0~100)")
var grade int
fmt.Scanln(&grade)
// 1 错误判断
if (grade < 0) || (grade > 100) {
fmt.Println("您输入的成绩有误!")
return
}
// 2 判断是否及格
if grade >= 60 {
fmt.Println("及格")
} else {
fmt.Println("不及格")
}
// 3 打印等级
if (grade >= 90) && (grade <= 100) {
fmt.Println("A")
} else if (grade >= 80) && (grade < 90) {
fmt.Println("B")
} else if (grade >= 70) && (grade < 80) {
fmt.Println("C")
} else if (grade >= 0) && (grade < 70) {
fmt.Println("D")
}
// 4 比较两个数值的大小
fmt.Println("请输入两个整数:")
var a, b int
fmt.Scanln(&a, &b)
if a > b {
fmt.Println(a, "大于", b)
} else if a < b {
fmt.Println(a, "小于", b)
} else {
fmt.Println(a, "等于", b)
}
}
3.1.2 switch语句
switch语句的语法:
switch condition {
case v0:
...
case v1:
...
case v2:
...
case v3:
...
case v4, v5, v6:
...
default:
...
}
注意事项:
1.左花括号{必须与switch同处一行。
2.case后可以使用常量,还可以使用变量。
package main
import "fmt"
func main() {
condition := 0
caseValue := 0
switch condition {
case caseValue:
fmt.Println("0")
case 1:
fmt.Println("1")
default:
fmt.Println("Default")
}
}
注意事项:
单个case后可以出现多个结果选项。
不需要用break来明确退出一个case。
只有在case中明确添加fallthrough关键字,才会继续执行下一个case。
package main
import "fmt"
func main() {
condition := 1
switch condition {
case 0:
fmt.Println("0")
case 1:
fmt.Println("1")
fallthrough
default:
fmt.Println("Default")
}
}