Go语言流程控制-条件判断 – 21运维
通知: .-...

Go语言流程控制-条件判断

GO 21运维 251浏览

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语言流程控制-条件判断