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语句中的初始化也是跟这个一样


欢迎大家关注下个人的「公众号」:独醉贪欢
在这里插入图片描述

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页