欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Go的条件判断语句的使用

程序员文章站 2022-06-21 18:53:41
...

现实时间中,我们如果想去购物,可以选择网上或者线下去购物,甚至说,要购买的物品都有许多选择,选价格便宜的,选质量好的,选不用运费等等

那么在计算机语言中,我们要怎么实现现实中,这些选择呢?

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 代码块中执行代码块的内容

执行过程

Go的条件判断语句的使用

多分支结构

格式

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

执行过程

第一份代码的图

Go的条件判断语句的使用

第二份代码的图

Go的条件判断语句的使用

嵌套分支结构

代码示例

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


欢迎大家关注下个人的「公众号」:独醉贪欢