【入门】Go语言流程控制
目录
一、if判断
1.1 单if结构
语法:
if 条件判断 {
代码句
}
案例:判断是否成年了
package main
import "fmt"
func main() {
var age uint
fmt.Println("请输入您的年龄:")
fmt.Scan(&age)
if age >= 18 {
fmt.Printf("已经成年了!")
}
}
代码输出内容:
请输入您的年龄:
22
已经成年了!
1.2 if..else结构
语法:
if 条件判断 {
代码句
} else {
代码句
}
案例:判断是否成年了如果小于18则打印未成年
package main
import "fmt"
func main() {
var age uint
fmt.Println("请输入您的年龄:")
fmt.Scan(&age)
if age >= 18 {
fmt.Printf("已经成年了!")
} else {
fmt.Printf("还未成年!")
}
}
代码输出内容:
请输入您的年龄:
17
还未成年!
1.3 if...else if...else结构
语法:
if 条件判断 {
代码句
} else if 条件判断 {
代码句
} else if 条件判断 {
代码句
} else {
}
案例:判断成绩
package main
import "fmt"
func main() {
var score int
fmt.Println("请输入您的成绩:")
fmt.Scan(&score)
if score == 100 {
fmt.Printf("您的成绩是:【%v】,满分!", score)
} else if score >= 80 && score < 100 {
fmt.Printf("您的成绩是:【%v】,优秀!", score)
} else if score >= 60 && score < 80 {
fmt.Printf("您的成绩是:【%v】,及格了!", score)
} else if score >= 0 && score < 60 {
fmt.Printf("您的成绩是:【%v】,没及格!", score)
} else {
fmt.Printf("输入成绩无效")
}
}
代码输出内容:
请输入您的成绩:
100
您的成绩是:【100】,满分!
请输入您的成绩:
70
您的成绩是:【70】,及格了!
案例:模拟用户登入系统,账号:admin、密码:666666
package main
import "fmt"
func main() {
var user string
var password string
fmt.Printf("请输入账号:")
fmt.Scan(&user)
fmt.Printf("请输入密码:")
fmt.Scan(&password)
if user == "admin" && password == "666666" {
fmt.Println("登入系统成功!")
} else if user == "admin" {
fmt.Println("密码输入错误!")
} else if password == "666666" {
fmt.Println("账号输入错误!")
} else {
fmt.Println("账号密码输入错误!")
}
}
代码输出内容:
请输入账号:admin
请输入密码:666666
登入系统成功!
请输入账号:admin
请输入密码:123456
密码输入错误!
请输入账号:ad1
请输入密码:888888
账号密码输入错误!
请输入账号:root
请输入密码:666666
账号输入错误!
1.4 if嵌套
案例:输入公交卡余额,只要超过2元,就可以上公交车,上车后如果有空位置就可以坐下
package main
import "fmt"
func main() {
var money float64
fmt.Println("请输入当前余额:")
fmt.Scan(&money)
if money >= 2 {
fmt.Println("可以上车啦!")
var count uint
fmt.Println("请输入当前公交座位数:")
fmt.Scan(&count)
if count > 0 {
fmt.Println("有空余座位,您可以找空位置坐!")
} else {
fmt.Println("没空余座位,您只能站着!")
}
} else {
fmt.Println("当前余额不足2元,您不能上车!")
}
}
代码输出内容:
请输入当前余额:
2
可以上车啦!
请输入当前公交座位数:
0
没空余座位,您只能站着!
案例:判断是否达到工作年龄,如果达到,判断工作城市,输出不通内容
package main
import "fmt"
func main() {
var age uint8
var work string
fmt.Println("请输入您的年龄:")
fmt.Scan(&age)
if age >= 18 {
fmt.Println("请输入您的工作地点:")
fmt.Scan(&work)
if work == "北京" {
fmt.Printf("%s,是一个快节奏城市,加油...", work)
} else if work == "上海" {
fmt.Printf("%s,是一个保守的城市,加油...", work)
} else if work == "成都" {
fmt.Printf("%s,是一个慢节奏的城市,这里工作肯定很愉快...", work)
} else {
fmt.Printf("%s,城市风景肯定很美...", work)
}
} else {
fmt.Println("未成年不能参加工作")
}
}
代码输入内容:
请输入您的年龄:
18
请输入您的工作地点:
北京
北京,是一个快节奏城市,加油...
二、switch判断
switch语句用于基于不同条件执行不同动作,每一个case分支都是唯一的,从上到下逐一测试,指到匹配为止。
2.1 switch语法一
语法:
switch 表达式 {
case 值1,值2:
语句块1
case 值3,值4:
语句块2
default:
语句块3
}
- 先执行表达式,得到值,然后和 case 的表达式进行比较,如果相等, 就匹配到,然后执行对应的 case 的语句块,然后退出 switch 控制。
- 如果 switch 的表达式的值没有和任何的 case 的表达式匹配成功,则执行 default 的语句块。执行后退出 switch 的控制。
- golang 中的 case 语句块不需要写 break , 因为默认会有,即在默认情况下,当程序执行完 case 语句块后,就直接退出该 switch 控制结构。
案例:
package main
import "fmt"
func main() {
var num1 int32 = 10
var num2 int32 = 20
switch num1 {
case num2, 10, 5: // 判断 num1 值是否匹配为 num2, 10, 5
fmt.Println("OK~")
default:
fmt.Println("NO!")
}
}
代码输出内容:
OK~
2.2 switch语法二
语法:
switch {
case 表达式1:
语句块1
case 表达式2:
语句块2
default:
语句块3
}
案例:
package main
import "fmt"
func main() {
age := 30
switch {
case age == 20:
fmt.Printf("age == 20")
case age == 30:
fmt.Printf("age == 30")
default:
fmt.Printf("没有匹配到~")
}
}
代码输出内容:
age == 30
三、拓展
3.1 switch和if分支对比
- 如果判断的具体数值不多,而且符合整数、浮点数、字符、字符串这几种类型。建议使用 swtich语句,简洁高效。
- 其他情况:对区间判断和结果为 bool 类型的判断使用 if,if 的使用范围更广。