Go程序实际就是一些标识符,加上运算符,以及一些变量,函数等调用以及流程控制语句来构建一个完整的程序的。
其中,流程控制这块在逻辑中很重要,go语法比较简单,比较容易掌握。
一,条件判断if
1,格式:
if 表达式1 { 代码模块1 } else if 表达式2{ 代码模块2 }else { 代码模块3 }
其中,if可以单独使用,也可以配合else ,以及配合else if使用。
判断逻辑:
如果复合表达式1,就执行代码模块1;
如果不满足1,就判断是否符合表达式2,如符合,就执行代码模块2;
如果条件表达式1和2都不符合,就执行代码模块3。
案例:
package main import "fmt" func main(){ a,b := 100,200 if a > b { fmt.Println("a>b") } else if a < b { fmt.Println("a<b") } else { fmt.Println("a=b") } }
输出结果:
a<b
说明:
(1)if 表达式右边的{ 必须和if 是同一行;
(2)else 以及else if 表达式必须位于“}的右边,且else 以及else if 表达式左边的“{“ 也必须和else 是同一行;
2,特殊写法【实际项目中很常用】
if 执行语句;条件表达式{
}
可以在if条件表达式的左侧写一个执行语句,执行完以后再去基于条件表达式进行if判断。
一般场景,这个执行语句一般用来赋值一个变量,这个变量会用到后边的条件表达式中。避免分开写,可以简化代码量。
package main import "fmt" func main(){ if a,b := 1,2; a<b { fmt.Println("a<b") } }
输出结果:
a
总结:
(1)平时代码中,条件代码中的变量,需要进行控制作用范围。建议使用作用范围越小的变量,避免影响代码的范围。
(2)尽量避免else if多重嵌套,逻辑太多,影响可读性和后续维护。
(3)条件表达式可以和逻辑运算符一起用,整体判断条件表达式的值(true或false)。
二,多分支条件判断–switch
switch 可以用于值判断,也可以用于条件表达式(true or false)判断,用于单或者多分支。 switch完全可以通过if else if else进行改写。
1,switch格式:
(1)值判断:
switch 变量 { case 变量1: 代码模块1 case 变量2: 代码模块2 default: 代码模块x }
说明:
a,判断一个变量,分别匹配case语句,从上到下进行判断,如果满足就执行并返回;如果都不满足,就执行default;
b,每个case执行完不需要跳出,直接执行完就返回结果;
c,case后边的变量可以跟多个变量值,变量值用逗号”,”隔开,比如case 变量x,变量y:
d,一个switch只允许有一个default。
(2)条件表达式判断(针对条件表达式结果true或false判断):
switch { case 条件表达式1: 代码模块1 case 条件表达式2: 代码模块2 default: 代码模块x }
案例代码:
package main import "fmt" func main(){ a := 2 switch a{ case 1: fmt.Println("a=1") case 2: fmt.Println("a=2") //fallthrough case 3: fmt.Println("a=3") case 4: fmt.Println("a=4") default: fmt.Println(a) } x,y,z := 1,2,3 switch { case x>y && z!= 0 : fmt.Println("x>y") case x<y && z!= 0 : fmt.Println("x<y") default: fmt.Println("z=0") } }
输出结果:
a=2
x
补充:fallthrough
默认go中的switch是执行完就返回,不会继续执行;如果需要继续执行,需要代码模块后边添加fallthrough,可以继续后边语句执行。
但是平时不建议使用。要依赖于场景。
转载请注明:21运维 » Go语言流程控制-条件判断