go基础-5.判断语句
if语句
以年龄为例,输入的年龄在某一个区间,就输出对应的提示信息
<=0 未出生
1-18 未成年
18-35 青年
>=35 中年
很明显,这是一个多选一的情况
我们有很多中方式来实现
中断式
package main
import "fmt"
func main() {
fmt.Println("请输入你的年龄:")
var age int
fmt.Scan(&age)
if age <= 0 {
fmt.Println("未出生")
return
}
if age <= 18 {
fmt.Println("未成年")
return
}
if age <= 35 {
fmt.Println("青年")
return
}
fmt.Println("中年")
}
它也有个好听的名字,叫卫语句
嵌套式
package main
import "fmt"
func main() {
fmt.Println("请输入你的年龄:")
var age int
fmt.Scan(&age)
if age <= 18 {
if age <= 0 {
fmt.Println("未出生")
} else {
fmt.Println("未成年")
}
} else {
if age <= 35 {
fmt.Println("青年")
} else {
fmt.Println("中年")
}
}
}
多条件式
package main
import "fmt"
func main() {
fmt.Println("请输入你的年龄:")
var age int
fmt.Scan(&age)
if age <= 0 {
fmt.Println("未出生")
}
if age > 0 && age <= 18 {
fmt.Println("未成年")
}
if age > 18 && age <= 35 {
fmt.Println("青年")
}
if age > 35 {
fmt.Println("中年")
}
}
switch语句
还是上面那个案例,如果是用switch就很直观了
package main
import "fmt"
func main() {
fmt.Println("请输入你的年龄:")
var age int
fmt.Scan(&age)
switch {
case age <= 0:
fmt.Println("未出生")
case age <= 18:
fmt.Println("未成年")
case age <= 35:
fmt.Println("青年")
default:
fmt.Println("中年")
}
}
除了这样的写法,还有枚举所有的可能值
例如
1 星期一
2 星期二
3 星期三
package main
import "fmt"
func main() {
fmt.Println("请输入星期数字:")
var week int
fmt.Scan(&week)
switch week {
case 1:
fmt.Println("周一")
case 2:
fmt.Println("周二")
case 3:
fmt.Println("周三")
case 4:
fmt.Println("周四")
case 5:
fmt.Println("周五")
case 6, 7:
fmt.Println("周末")
default:
fmt.Println("错误")
}
}
可以理解为case的值就是switch的枚举结果
一般来说,go的switch的多选一,满足其中一个结果之后,就结束switch了
例如
package main
import "fmt"
func main() {
fmt.Println("请输入你的年龄:")
var age int
fmt.Scan(&age)
switch {
case age <= 0:
fmt.Println("未出生")
case age <= 18:
fmt.Println("未成年")
case age <= 35:
fmt.Println("青年")
default:
fmt.Println("中年")
}
}
我输入一个12,我希望它能输出满足的所有条件,例如我希望它输出,未成年,青年
package main
import "fmt"
func main() {
fmt.Println("请输入你的年龄:")
var age int
fmt.Scan(&age)
switch {
case age <= 0:
fmt.Println("未出生")
fallthrough
case age <= 18:
fmt.Println("未成年")
fallthrough
case age <= 35:
fmt.Println("青年")
default:
fmt.Println("中年")
}
}
参考文档
卫语句 https://blog.csdn.net/wangpaiblog/article/details/114909737
switch https://blog.csdn.net/qq_43470538/article/details/130436381