Go的条件判断语句的使用
现实时间中,我们如果想去购物,可以选择网上或者线下去购物,甚至说,要购买的物品都有许多选择,选价格便宜的,选质量好的,选不用运费等等
那么在计算机语言中,我们要怎么实现现实中,这些选择呢?
Go语言支持了几种条件判断语句,if 语句和switch语句
if 语句
单分支结构
格式
if 条件表达式 {
代码块
}
代码示例
package main
import "fmt"
func main(){
var shopping int = 1 //网上购物的编号为1,线下购物的编号为2
//当 shopping == 1的时候,选择网上购物
if shopping == 1 {
fmt.Println("选择网上购物,此时shopping的值为:", shopping)
}
//当 shopping == 2的时候,选择线下购物
if shopping == 2 {
fmt.Println("选择线下购物,此时shopping的值为:", shopping)
}
}
输出为:选择网上购物,此时shopping的值为: 1
在这里,我们定义了一个变量 shopping,并赋值为1,这时候运行代码,代码会先判断第一个 if 语句,也就是 shopping == 1 这个条件表达式所在的 if 条件句,由于符合条件,所以进入代码块中;执行完代码块后,程序会继续向下执行,这时候会遇到第二个 if 语句,然后判断 shopping是否等于2,由于shopping等于1,不符合条件,所以不进入代码块中,所以不输出,至此程序执行结束。
注意:如果第二个 if 语句的条件表达式也符合 shopping == 1的话,会进入if 代码块中执行代码块的内容
执行过程
多分支结构
格式
if 条件表达式 {
代码块
}else {
代码块
}
--------------------------------------
if 条件表达式{
代码块
}else if 条件表达式{
代码块
}else{
代码块
}
代码示例
package main
import "fmt"
func main(){
var shopping int = 2 //网上购物的编号为1,其它编号都是线下购物
//当 shopping == 1的时候,选择网上购物
//当 shopping != 1的时候,选择线下购物
if shopping == 1 {
fmt.Println("选择网上购物,此时shopping的值为:", shopping)
}else{
fmt.Println("选择线下购物,此时shopping的值为:", shopping)
}
}
输出:选择线下购物,此时shopping的值为: 2
代码执行到 if 语句这里后,判断条件是否成立,如果成立,执行代码块的代码;如果不成立,执行 else 语句中的内容,也就是说,除了 shopping == 1 这个条件成立会执行 **“选择网上购物”**外,其它数字的输入,都会走到 else语句中
package main
import "fmt"
func main(){
var shopping int = 3 //网上购物的编号为1,线下购物的编号为2,其它的都不去购物
//当 shopping == 1的时候,选择网上购物
//当 shopping == 2的时候,选择线下购物
if shopping == 1 {
fmt.Println("选择网上购物,此时shopping的值为:", shopping)
}else if shopping == 2{
fmt.Println("选择线下购物,此时shopping的值为:", shopping)
}else {
fmt.Println("不去购物了,在家躺尸比较舒服")
}
}
输出:不去购物了,在家躺尸比较舒服
上面的语句,较 if…else 语句而言,多了 else if 语句,可以让程序多个选择。当执行到第一个 if 语句 shopping == 1的,由于条件不成立,继续向下执行,执行到 else if 语句,这个语句的条件是 shopping == 2,也不成立,执行 else 语句中的代码
如果有多个 else if 语句,那么只要前面的不匹配,就会执行下面的 else if,直到没有 else if为止,那么久执行 else
执行过程
第一份代码的图
第二份代码的图
嵌套分支结构
代码示例
package main
import "fmt"
func main(){
//声明三个个变量,分别代表了数学成绩,英语成绩还有年龄
var mathScore int = 88
var englishScore int = 90
var age int = 18
//只要有一个科目的成绩在90分以上就评为优秀,这时候要是年龄小于等于18,那么可以多个奖状
if mathScore >= 90 || englishScore >= 90{
fmt.Println("优秀")
if age <= 18 {
fmt.Println("奖励奖状一张")
}
} else {
fmt.Println("干什么吃的,没一科考到90+")
}
}
输出:优秀(此处在打印的时候,是有换行的)奖励奖状一张
嵌套分支,其实跟其它分支是差不多的,它只是在分支里面,还嵌套了条件判断语句
switch 语句
Go中的 switch语句,跟其它语句还是略有些区别的:
-
执行完 case 后,不用调用 break关键字,来让程序跳出 switch 语句,因为在每个case后面,都会默认加一个 break关键字
-
要想匹配完一个语句后,继续执行下面的case,只要使用关键字 fallthrough即可,无论下面的case是否匹配上,都会执行 fallthrough语句下面的 case中的内容
-
case 后面的类型,要跟 switch中的类型匹配,下面代码的 expr的类型要保持一致
switch expr { case expr }
-
default 在这里可有可无
-
switch 后面可以是任意类型
代码示例
不带 fallthrough关键字
package main
import "fmt"
func main() {
//定义一个变量,来代表成绩
var score int64 = 90
switch {
case score >= 90:
fmt.Println("优秀")
case score >= 80 && score < 90:
fmt.Println("良好")
default:
fmt.Println("一般")
}
}
输出结果:优秀
带 fallthrough关键字
package main
import "fmt"
func main() {
//定义一个变量,来代表成绩
var score int64 = 99
switch {
case score > 90:
fmt .Println("优秀")
fallthrough
case score >= 80 && score < 90:
fmt.Println("良好")
default:
fmt.Println("一般")
}
}
输出:优秀(此处在打印的时候,是有换行的)良好
是不是很奇怪,明明 fallthrough后面的case条件明明不匹配,但他就是执行了,可能是因为名字中有 through这个词的原因吧,表示穿过(这个是我瞎说的,不要当真)
补充
if 和 switch语句后面可以带个初始化语句,如下
package main
import "fmt"
func main() {
switch score := 99;{
case score >= 90:
fmt .Println("优秀")
fallthrough
case score >= 80 && score < 90:
fmt.Println("良好")
default:
fmt.Println("一般")
}
}
分号后面,才是下面要 switch后面要跟的类型,而 if语句中的初始化也是跟这个一样
欢迎大家关注下个人的「公众号」:独醉贪欢
上一篇: 簡單IF、for、while講解
下一篇: Shell-for批量创建用户
推荐阅读
-
在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名
-
JS中比Switch...Case更优雅的多条件判断写法
-
对Python中的条件判断、循环以及循环的终止方法详解
-
Oracle中SQL语句连接字符串的符号使用介绍
-
使用Oracle的Decode函数进行多值判断
-
强制SQL Server执行计划使用并行提升在复杂查询语句下的性能
-
C#使用linq语句查询数组中以特定字符开头元素的方法
-
Python中条件判断语句的简单使用方法
-
Python中在for循环中嵌套使用if和else语句的技巧
-
Android 自动判断是电话,网址,EMAIL方法之Linkify的使用