0


【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"funcmain(){
    age :=35if age >=35{
        fmt.Println("正式工作了,开整开整")}}

Go语法规范:

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

2、双分支

基本语法:

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

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

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

Go语法规范

  • else 和 } 不能分行。下面的代码编写方式是错误的if 条件表达式 { 逻辑代码1}else{ 逻辑代码2}在这里插入图片描述

3、多分支

基本语法:

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

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

package main

import"fmt"funcmain(){
    age :=35if age >=35{
        fmt.Println("正式工作了,开整开整")}elseif 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...:
        代码逻辑1case value5,value6...:
        代码逻辑2case value7...:
        代码逻辑3default:
        代码逻辑4}
package main

import"fmt"funcmain(){
    score :=98// 根据分数判断等级switch score /10{case9,10:
        fmt.Println("优秀")case7,8:
        fmt.Println("良好")case6:
        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支持多个值。

对比Java来看

1)if

Go中的if和Java中的if使用相同,Go语言中只是把if后面的小括号给去掉了。

Java中的if

if(num >10){....}

Go中的if

if num >10{....}

2)switch

Go中的switch和Java中的switch使用基本相同;区别在于:

  • Go中把switch后面的小括号给去掉了;
  • Go中的switch每一个case中不需要写break,Java需要写(不写,则全部穿透)。
  • Go中的switch特性更加丰富,支持表达式、支持穿透、case支持多个值。 - Java中不支持case多个值。

Java中的switch

int score =98;// 根据分数判断等级switch(score /10){case10:case9:System.out.println("优秀");case8:case7:System.out.println("良好");break;case6:System.out.println("及格");break;default:System.out.println("不及格");break;}

Go中的switch

score :=98// 根据分数判断等级switch score /10{case9,10:
        fmt.Println("优秀")// switch穿透, 继续执行下一个casefallthroughcase7,8:
        fmt.Println("良好")case6:
        fmt.Println("及格")default:
        fmt.Println("不及格")}
标签: golang

本文转载自: https://blog.csdn.net/Saintmm/article/details/131161428
版权归原作者 秃秃爱健身 所有, 如有侵权,请联系我们删除。

“【30天熟悉Go语言】7 Go流程控制之分支结构if、switch”的评论:

还没有评论