GO语言学习(6)条件语句

目录

前言

1. if语句

2. Switch语句

2.1 基本语法

2.2 fallthrough落穿

3.select语句


前言

        本文将主要介绍if...else语句,switch语句以及select语句,三种条件语句的使用。

语句描述
if语句if 语句 由一个条件判断的布尔表达式后紧跟一个或多个语句组成。
if...elseif 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。
if嵌套语句可在 if 或 else if 语句中嵌入一个或多个 if 或 else if 语句。
switch语句switch 语句基于不同条件case,执行不同操作。
select语句select 语句类似于 switch 语句,但是select会随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。

1. if语句

        GO语言中if语句的基本语法格式如下:

if 条件表达式 {
   /* 在条件表达式为 true 时执行 */
}

// 使用else的if语句
if 条件表达式 {
   /* 在条件表达式为 true 时执行 */
} else {
  /* 在条件表达式为 false 时执行 */
}

// if的嵌套使用
if 条件表达式 1 {
   /* 在条件表达式 1 为 true 时执行 */
   if 条件表达式 2 {
      /* 在布尔表达式 2 为 true 时执行 */
   }
}

        具体逻辑如上图所示,左图为if语句逻辑流程,右图为if...else...语句流程。

        示例代码:

package main
import "fmt"

func main() {
   var a int = 520;
 
   /* 判断布尔表达式 */
   if a < 100 {
       /* 如果条件为 true 则执行以下语句 */
       fmt.Printf("a 小于 100\n" );
   } else {
       /* 如果条件为 false 则执行以下语句 */
       fmt.Printf("a 不小于 100\n" );     // 本例执行此处else代码
   }
   fmt.Printf("a 的值为 : %d\n", a);  

}

        另外,在GO语言中,允许在 if 语句中直接声明变量,这个变量的作用域仅限于 if 语句块,同时你也可以使用 else if 进行多个条件判断:

package main
import "fmt"

func main() {
    if score := 85;score >= 90 {  // 声明条件判断的变量,同时进行条件判断
        fmt.Println("Grade: A")
    } else if score >= 80 {
        fmt.Println("Grade: B")  // 最终输出 Grade:B
    } else if score >= 70 {
        fmt.Println("Grade: C")
    } else {
        fmt.Println("Grade: F")
    }
}

2. Switch语句

2.1 基本语法

        switch 语句用于根据变量的值选择执行不同的代码块。它比多个 if-else if 更清晰,尤其适用于多个条件分支。基本语法如下:

switch variable {
case value1:
    // 当 variable == value1 时执行的代码
case value2:
    // 当 variable == value2 时执行的代码
default:
    // 如果 variable 不匹配任何 case,执行默认代码
}

        在 switch 语句中,case 的值必须是可比较的,并且不能重复

        其中variable变量并非必须,switch语句也可以不带变量,直接对表达式进行判断:

package main
import "fmt"

func main() {
   var grade string = "B"
   var marks int = 90

   switch marks {                    // 对变量mark进行条件判断
      case 90: grade = "A"           // 本例触发此处条件,将grade赋值为A
      case 80: grade = "B"
      case 50,60,70 : grade = "C"
      default: grade = "D"  
   }

   switch {                        // 对变量grade进行条件判断,case判断中需写入对应变量名
      case grade == "A" :
         fmt.Printf("优秀!\n" )     
      case grade == "B", grade == "C" :
         fmt.Printf("良好\n" )       // 本例输出 良好
      case grade == "D" :
         fmt.Printf("及格\n" )      
      case grade == "F":
         fmt.Printf("不及格\n" )
      default:
         fmt.Printf("差\n" );
   }
   fmt.Printf("你的等级是 %s\n", grade );      
}

2.2 fallthrough落穿

在 Go 中,switch 的每个 case 默认不会自动落穿到下一个 case。相当于C语言中的switch语句,每个case后面加上了break。如果需要落穿,可以使用 fallthrough 关键字。使用 fallthrough 会强制执行后面的 case 语句,fallthrough 不会判断下一条 case 的表达式结果是否为 true。

package main
import "fmt"

func main() {
    i := 2
    switch i {
    case 1:
        fmt.Println("One")
    case 2:
        fmt.Println("Two")
        fallthrough          // 使用落穿,下一个case一定执行!
    case 3:
        fmt.Println("Three")
    }
}

3.select语句

        select 语句类似于 switch 语句,但是select会随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。由于select 语句只能用于通道(channel)操作,每个 case 必须是一个通道操作,具体内容可参考GO语言学习(14)并发编程当中的3.4小节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值