本教材由知了传课辛苦制作而成,仅供学习使用,请勿用于商业用途!如进行转载请务必注明出处!谢谢!

选择结构

一、 if语句

1. if

var a int=3 if a == 3{//条件表达式没有括号 fmt.Println("a==3") } //支持一个初始化表达式,初始化字句和条件表达式直接需要用分号分隔 if b:= 3;b == 3{ fmt.Println("b==3") } //拿登录密码做一个举例: var userpwd int =123 //我自己定义的密码 var upd int =123 //假设用户自己输入的密码 if userpwd == upd { fmt.Println("我密码正确了!!!!!我成功了") //反之如果不相等就不会进入花括号里面来,也就不会运行这里面的代码 }

2. if … else

if a:=3; a==4{ fmt.Println("a==4") }else{ //左大括号必须和条件语句或else在同一行 fmt.Println("a!=4") } //拿登录密码做一个举例: var userpwd int =123 //我自己定义的密码 var upd int =123456 //假设用户自己输入的密码 if upd==userpwd{ //上面这一行的意思(如果用户输入的密码等于了我自己设定的密码那就让他进来) //那么我就可以进入到这个花括号里面做点事情 //比如打印 fmt.Println("我密码正确了!!!!!我成功了") //反之如果不相等就不会进入花括号里面来,也就不会运行这里面的代码 }else{ //如果用户输入的密码和我定义的密码不一样,他就不会进入上面那个花括号 //就会进入到我这里然后我就打印 fmt.Println("就这?密码都是错的) }

3. if … else if … else

if a:=3; a>3 { fmt.Println("a>3") } else if a<3 { fmt.Println("a<3") } else if a==3 { fmt.Println("a==3") } else { fmt.Println("error") } //上面代码的意思就是,我先定义一个a:=3的变量,然后去判断,从第一个开始, //a大于3吗?很明显不大于,然后继续往下面走 //a小于3吗?很明显也不小于,然后继续往下走 //a等于3吗?对了a等于3然后他就会输出"a==3" //我们假设定义的变量a:=4那么上面的条件都不满足他就会进入最后一个else //就会打印"error"

二、 switch语句

Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch,但是可以使用fallthrough强制执行后面的case代码:

var score int = 90 switch score { case 90: fmt.Println("A") //fallthrough case 80: fmt.Println("B") //fallthrough case 50,60,70: fmt.Println("C") //fallthrough default: fmt.Println("D") } //其实和if语句是差不多的道理,switch 后面就写你的条件比如上面的分数 //然后进入带着分数进入第一个case,如果分数等于90那我就打印A如果不等于 //我就进入下一条case。如果全部都没有匹配的那我们就进入default

可以使用任何类型或表达式作为条件语句:

//1 switch s1:=90 ; s1{//初始化语句;条件 case 90: fmt.Println("A") case 80: fmt.Println("B") default: fmt.Println("C") } //这里是一样的只是在switch 后面定义了一个初始化变量,switch s1:=90 其实就是 //不用到上面定义var s1 int =90,switch s1和switch s1:=90 是一样的道理 //2 var s2 int=90 switch{ //这里没有写条件 case s2 >= 90: //这里写判断语句 fmt.Println("A") cases2 >= 80: fmt.Println("B") default: fmt.Println("C") } //这里的话就用上了条件了,,switch后面就不用写变量了,直接写花括号就行, //我们在case 后面去判断,就和if 后面加条件一抹一样 //3 switch s3 := 90;{ //只有初始化语句,没有条件 case s3 >= 90: //这里写判断语句 fmt.Println("A") case s3 >= 80: fmt.Println("B") default: fmt.Println("C") } //这里就是结合了初始化变量和条件语句

三、 区别

  1. if-else语句更适合于对区间(范围)的判断,而switch语句更适合于对离散值的判断。

  2. switch语句只支持常量值相等的分支判断,而if语句支持更为灵活,任意布尔表达式均可。

  3. switch语句通常比一系列嵌套if语句效率更高;逻辑更加清晰。

1581人已阅读,今天你学习了吗?

添加新回复