golang switch的语法使用小结

 更新时间:2026年02月05日 09:16:33   作者:Lai助官方账号  
本文主要介绍了golang switch的语法使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在 Go 语言中,switch 语句提供了一种根据表达式的值执行不同代码块的机制。它比多个 if-else 语句更清晰、更易于维护,尤其适用于多路分支的情况。

基本语法

switch expression {
case value1:
    // 表达式等于 value1 时执行的代码块
case value2:
    // 表达式等于 value2 时执行的代码块
...
default:
    // 以上条件都不满足时执行的代码块(可选)
}

示例代码

以下是一些 switch 语句的常见用法示例:

1. 基本的switch语句

package main

import "fmt"

func main() {
    day := 3

    switch day {
    case 1:
        fmt.Println("星期一")
    case 2:
        fmt.Println("星期二")
    case 3:
        fmt.Println("星期三")
    case 4:
        fmt.Println("星期四")
    case 5:
        fmt.Println("星期五")
    case 6:
        fmt.Println("星期六")
    case 7:
        fmt.Println("星期日")
    default:
        fmt.Println("无效的天数")
    }
}

2.不带表达式的switch

在 Go 中,switch 后面的表达式可以省略,此时相当于 switch true,常用于替代多个 if-else 语句。

package main

import "fmt"

func main() {
    num := 5

    switch {
    case num < 0:
        fmt.Println("负数")
    case num == 0:
        fmt.Println("零")
    case num > 0 && num < 10:
        fmt.Println("正数且小于 10")
    case num >= 10:
        fmt.Println("正数且大于或等于 10")
    default:
        fmt.Println("不可能的情况")
    }
}

3. 多值匹配

可以为一个 case 指定多个匹配值,值之间用逗号分隔。

package main

import "fmt"

func main() {
    grade := 'B'

    switch grade {
    case 'A', 'B', 'C':
        fmt.Println("成绩良好")
    case 'D':
        fmt.Println("成绩及格")
    case 'E', 'F':
        fmt.Println("成绩不及格")
    default:
        fmt.Println("无效的成绩等级")
    }
}

4. 类型判断

switch 还可以用于判断变量的类型,这在处理接口类型时非常有用。

package main

import "fmt"

func main() {
    var value interface{} = "Hello, Go!"

    switch v := value.(type) {
    case int:
        fmt.Printf("整数: %d\n", v)
    case string:
        fmt.Printf("字符串: %s\n", v)
    case bool:
        fmt.Printf("布尔值: %v\n", v)
    case nil:
        fmt.Println("空值")
    default:
        fmt.Printf("未知类型: %T\n", v)
    }
}

注意事项

  • 自动跳转:Go 语言的 switch 语句不会自动从一个 case 跳转到下一个 case,每个 case 的代码块执行完成后会自动退出 switch 语句。
  • default 子句:default 子句是可选的,用于处理所有不匹配的情况。
  • 变量声明:可以在 switch 语句中声明变量。

希望这些示例能帮助你更好地理解和使用 Go 语言中的 switch 语句。

你希望在匹配某个 case 后,继续执行下一个 case 的代码块,而不是退出 switch 语句。这时就可以使用 fallthrough。

以下是一个使用 fallthrough 的示例:

package main

import "fmt"

func main() {
    day := 3

    switch day {
    case 1:
        fmt.Println("今天是星期一")
        fallthrough
    case 2:
        fmt.Println("明天是星期二")
        fallthrough
    case 3:
        fmt.Println("后天是星期三")
        fallthrough
    case 4:
        fmt.Println("大后天是星期四")
        fallthrough
    case 5:
        fmt.Println("再后天是星期五")
        fallthrough
    case 6:
        fmt.Println("又是星期六了")
        fallthrough
    case 7:
        fmt.Println("星期日到了")
    default:
        fmt.Println("无效的天数")
    }
}

输出

今天是星期一
明天是星期二
后天是星期三
大后天是星期四
再后天是星期五
又是星期六了
星期日到了

说明

  • fallthrough 的作用:在每个 case 的末尾使用 fallthrough,可以让程序继续执行下一个 case 的代码,即使下一个 case 的条件不匹配。
  • 执行流程:当 day 的值为 3 时,程序匹配到 case 3,并执行 fmt.Println("后天是星期三"),然后 fallthrough 使程序继续执行 case 4 的代码,依此类推。
  • default 子句:如果 day 的值超出了 1 到 7 的范围,程序将执行 default 子句中的代码。

注意事项

  • 显式意图:fallthrough 需要显式地写在 case 代码块的末尾,不能省略。
  • 谨慎使用:虽然 fallthrough 提供了额外的控制流程,但过度使用可能会使代码难以理解,应根据实际需求谨慎使用。

到此这篇关于golang switch的语法使用小结的文章就介绍到这了,更多相关golang switch内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Go语言连接和操作数据库的基本步骤

    使用Go语言连接和操作数据库的基本步骤

    在Go语言中,连接和操作数据库通常使用database/sql包,它提供了一个数据库抽象层,支持多种数据库引擎,如MySQL、PostgreSQL、SQLite等,下面我将以MySQL为例,详细讲解如何使用Go语言连接和操作数据库,需要的朋友可以参考下
    2024-06-06
  • Golang开发gRPC服务入门介绍

    Golang开发gRPC服务入门介绍

    这篇文章主要介绍了Golang开发gRPC服务,Golang开发gRPC应用程序的套路也已经很清晰,这篇文章就来做一个简单的介绍,算是入门,需要的朋友可以参考下
    2022-04-04
  • golang逐行读取文件的操作

    golang逐行读取文件的操作

    这篇文章主要介绍了golang逐行读取文件的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Go语言学习笔记之文件读写操作详解

    Go语言学习笔记之文件读写操作详解

    这篇文章主要为大家详细介绍了Go语言对文件进行读写操作的方法,文中的示例代码讲解详细,对我们学习Go语言有一定的帮助,需要的可以参考一下
    2022-05-05
  • 浅析Golang中变量与常量的声明与使用

    浅析Golang中变量与常量的声明与使用

    变量、常量的声明与使用是掌握一门编程语言的基础,这篇文章主要为大家详细介绍了Golang中变量与常量的声明与使用,需要的可以参考一下
    2023-04-04
  • Golang学习笔记(二):类型、变量、常量

    Golang学习笔记(二):类型、变量、常量

    这篇文章主要介绍了Golang学习笔记(二):类型、变量、常量,本文讲解了基本类型、保留字、变量、常量、枚举、运算符、指针、分组声明等内容,需要的朋友可以参考下
    2015-05-05
  • Go语言中的range用法实例分析

    Go语言中的range用法实例分析

    这篇文章主要介绍了Go语言中的range用法,实例分析了range的功能与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • GoLang unsafe包详细讲解

    GoLang unsafe包详细讲解

    从golang的定义来看,unsafe 是类型安全的操作。顾名思义,它应该非常谨慎地使用; unsafe可能很危险,但也可能非常有用。例如,当使用系统调用和Go结构必须具有与C结构相同的内存布局时,您可能别无选择,只能使用unsafe
    2022-10-10
  • 使用Golang的gomail库实现邮件发送功能

    使用Golang的gomail库实现邮件发送功能

    本篇博客详细介绍了如何使用Golang语言中的gomail库来实现邮件发送的功能,首先,需要准备工作,包括安装Golang环境、gomail库,以及申请126邮箱的SMTP服务和获取授权码,其次,介绍了在config文件中配置SMTP服务器信息的步骤
    2024-10-10
  • GO将mysql 中 decimal 数据类型映射到 protobuf的操作方法

    GO将mysql 中 decimal 数据类型映射到 protobuf的操作方法

    这篇文章主要介绍了go如何优雅地将 mysql 中 decimal 数据类型映射到 protobuf,本文主要展示一下在 protobuf中 float与double的一个区别,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-09-09

最新评论