Go 语言条件语句(Conditional Statements)详解
                           
天天向上
发布: 2025-03-25 23:44:51

原创
959 人浏览过

在 Go 语言中,条件语句用于控制程序的执行流程,常见的条件语句有:

  • if 语句
  • if...else 语句
  • if...else if...else 语句
  • switch 语句
  • select 语句(用于 goroutinechannel

1. if 语句

if 语句用于判断某个条件是否为 true,如果为 true,则执行代码块。

1.1 基本语法

if 条件 {
    // 代码块
}

1.2 示例

package main

import "fmt"

func main() {
    age := 20

    if age >= 18 {
        fmt.Println("成年人")
    }
}

输出:

成年人

2. if…else 语句

if...else 语句用于在条件为 false 时执行另一个代码块。

2.1 语法

if 条件 {
    // 条件为 true 执行
} else {
    // 条件为 false 执行
}

2.2 示例

package main

import "fmt"

func main() {
    num := 10

    if num%2 == 0 {
        fmt.Println("偶数")
    } else {
        fmt.Println("奇数")
    }
}

输出:

偶数

3. if…else if…else 语句

if...else if...else 语句适用于多个条件分支的情况。

3.1 语法

if 条件1 {
    // 条件1为 true 执行
} else if 条件2 {
    // 条件2为 true 执行
} else {
    // 以上条件都不满足执行
}

3.2 示例

package main

import "fmt"

func main() {
    score := 85

    if score >= 90 {
        fmt.Println("优秀")
    } else if score >= 75 {
        fmt.Println("良好")
    } else if score >= 60 {
        fmt.Println("及格")
    } else {
        fmt.Println("不及格")
    }
}

输出:

良好

4. if 语句的简短变量声明

if 语句中,可以使用 := 进行简短变量声明,这种变量仅在 if 代码块内有效

4.1 语法

if 变量 := 表达式; 条件 {
    // 代码块
}

4.2 示例

package main

import "fmt"

func main() {
    if num := 10; num%2 == 0 {
        fmt.Println(num, "是偶数")
    } else {
        fmt.Println(num, "是奇数")
    }
}

输出:

10 是偶数

注意: num 变量仅在 if 语句作用域内有效,无法在 if 语句外部使用。


5. switch 语句

switch 语句是一种多分支结构,类似 if...else if...else,但更简洁。

5.1 语法

switch 表达式 {
case 值1:
    // 代码块
case 值2:
    // 代码块
default:
    // 代码块
}

5.2 示例

package main

import "fmt"

func main() {
    day := 3

    switch day {
    case 1:
        fmt.Println("星期一")
    case 2:
        fmt.Println("星期二")
    case 3:
        fmt.Println("星期三")
    default:
        fmt.Println("未知日期")
    }
}

输出:

星期三

5.3 switch 语句的多条件匹配

package main

import "fmt"

func main() {
    score := 85

    switch {
    case score >= 90:
        fmt.Println("优秀")
    case score >= 75:
        fmt.Println("良好")
    case score >= 60:
        fmt.Println("及格")
    default:
        fmt.Println("不及格")
    }
}

输出:

良好

特点:

  • switch 语句后不需要指定表达式,直接在 case 语句中使用条件判断。

6. switch 语句的 fallthrough

默认情况下,switch 在匹配 case 后不会继续执行后续 case,但使用 fallthrough 关键字可以让 switch 继续执行下一个 case 代码块。

package main

import "fmt"

func main() {
    num := 2

    switch num {
    case 1:
        fmt.Println("一")
    case 2:
        fmt.Println("二")
        fallthrough
    case 3:
        fmt.Println("三")
    default:
        fmt.Println("其他")
    }
}

输出:

二
三

注意: fallthrough 不会判断下一个 case 是否匹配,直接执行下一 case


7. select 语句(用于 channel

select 语句用于监听多个 channel,当其中一个 channel 可用时执行相应的 case 代码块。

7.1 语法

select {
case <-channel1:
    // 当 channel1 可读时执行
case <-channel2:
    // 当 channel2 可读时执行
default:
    // 如果所有 channel 都不可读,则执行
}

7.2 示例

package main

import (
    "fmt"
    "time"
)

func main() {
    ch1 := make(chan string, 1)
    ch2 := make(chan string, 1)

    ch1 <- "数据1"

    select {
    case msg := <-ch1:
        fmt.Println("接收:", msg)
    case msg := <-ch2:
        fmt.Println("接收:", msg)
    default:
        fmt.Println("没有数据")
    }
}

输出:

接收: 数据1

8. 总结

语句用途
if仅执行单个条件判断
if...else两个条件分支
if...else if...else多个条件分支
switch替代 if...else if...else,更简洁
switch + fallthrough强制执行下一个 case
select用于 channel 处理并发

发表回复 0

Your email address will not be published. Required fields are marked *