【30天熟悉Go语言】7 Go流程控制之分支结构if、switch

一、前言

在这里插入图片描述

Go系列文章:

  1. GO开篇:手握Java走进Golang的世界
  2. 2 Go开发环境搭建、Hello World程序运行
  3. 3 Go编程规约和API包
  4. 4 Go的变量、常量、运算符
  5. 5 Go 基本数据类型
  6. 6 Go 复杂数据类型之指针

Go专栏传送链接:https://blog.csdn.net/saintmm/category_12326997.html

二、if

if 语句由布尔表达式后紧跟一个或多个语句组成。

在这里插入图片描述

if分支结构和其他语言是一样的概念,仅仅API的使用上有细微差别。

1、单分支

基本语法:

if (条件表达式) {
    
    
    逻辑代码
}

当条件表达式为true时,会执行{}中的逻辑代码。

package main

import "fmt"

func main() {
    
    
	age := 35
	if age >= 35 {
    
    
		fmt.Println("正式工作了,开整开整")
	}
}

Go语法规范:

  • 条件表达式左右的()可以不写,建议不写;
  • if和表达式中间,一定要有空格;
  • {}是必须有的,哪怕只写一行代码;在Java中if代码块中仅有一行代码时,可以省略{}

2、双分支

基本语法:

if 条件表达式 {
    
    
    逻辑代码1
} else {
    
    
    逻辑代码2
}

当条件表达式成立时,执行逻辑代码1;否则执行逻辑代码2。

func main() {
    
    
	age := 35
	if age >= 35 {
    
    
		fmt.Println("正式工作了,开整开整")
	} else {
    
    
		fmt.Println("该吃吃该喝喝,耍一耍")
	}
}

Go语法规范

  • else 和 } 不能分行。下面的代码编写方式是错误的

    if 条件表达式 {
          
           
       逻辑代码1 
    } 
    else {
          
           
       逻辑代码2 
    } 
    

    在这里插入图片描述

3、多分支

基本语法:

if 条件表达式1 {
    
    
    逻辑代码1
} else if 条件表达式2 {
    
    
    逻辑代码2
} else {
    
    
    逻辑代码3
}

如果走了一个分支,其他分支不会再去判断执行。

package main

import "fmt"

func main() {
    
    
	age := 35
	if age >= 35 {
    
    
		fmt.Println("正式工作了,开整开整")
	} else if age <= 3 {
    
    
		fmt.Println("good good study, day day up")
	} else {
    
    
		fmt.Println("该吃吃该喝喝,耍一耍")
	}
}

三、switch

switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止。

switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面不需要再加 break;默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case。

在这里插入图片描述

1、基本语法

语法:

switch 表达式 {
    
    
    case value1...:
        代码逻辑1
    case value5,value6...:
        代码逻辑2
    case value7...:
        代码逻辑3
    default:
        代码逻辑4
}
package main

import "fmt"

func main() {
    
    
	score := 98
	// 根据分数判断等级
	switch score / 10 {
    
    
	case 9, 10:
		fmt.Println("优秀")
	case 7, 8:
		fmt.Println("良好")
	case 6:
		fmt.Println("及格")
	default:
		fmt.Println("不及格")
	}
}

default是用来“兜底”的一个分支,当其它case分支都不走时会走default分支。

2、语法规范

1)switch

  1. switch后是一个表达式,可以是常量值、变量、有返回值的函数…
    • 在Java中,常用的Java8里,支持的数据类型为:byte、short、int、long、char、String、enum。
  2. switch后可以不跟表达式,直接仿作if分支来使用;
    在这里插入图片描述
  3. switch后也可以直接声明/定义一个变量,分号结束,不推荐使用
    在这里插入图片描述
  4. switch穿透:利用fallthrough关键字,如果在case语句块后增加fallthrough ,则会继续执行下一个case,default也能穿透到;
    在这里插入图片描述

2)case

  1. case后面的值如果是常量值,不能重复;
    在这里插入图片描述

  2. case后值的数据类型 必须和switch表达式返回值的数据类型一致;
    在这里插入图片描述

  3. case后可以跟多个值,使用逗号间隔,比如:case value1,value2,value3
    在这里插入图片描述

  4. case后面不需要加break;默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case。

3)default

  1. default分支可以放在任意位置上,不一定非要放在最后;

四、总结

go语言中对if、switch语法的要求更加严格,相对于Java等高级语言而言,也有了更多的特性:比如:switch支持表达式、支持穿透、case支持多个值。

猜你喜欢

转载自blog.csdn.net/Saintmm/article/details/131161428