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语言实现高并发百万QPS的关键技术栈

    Go语言实现高并发百万QPS的关键技术栈

    Go语言凭借其轻量级goroutine和高效的调度器,天然适合高并发场景,Go语言通过Goroutine调度优化、I/O多路复用等技术实现高并发,结合性能调优与架构设计,可支撑百万QPS,延迟低于5ms,支持未来扩展
    2025-05-05
  • Go使用select切换协程入门详解

    Go使用select切换协程入门详解

    这篇文章主要为大家介绍了Go使用select切换协程入门详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • 使用go实现适配器模式

    使用go实现适配器模式

    这篇文章主要介绍了使用go实现适配器模式,这个模式就是用来做适配的,它将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作,需要的朋友可以参考下
    2021-11-11
  • golang连接kafka的示例代码

    golang连接kafka的示例代码

    本文主要介绍了golang连接kafka的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • GO语言异常处理机制panic和recover分析

    GO语言异常处理机制panic和recover分析

    这篇文章主要介绍了GO语言异常处理机制panic和recover,分析了捕获运行时发生错误的方法,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12
  • Go语言反射reflect.Value实现方法的调用

    Go语言反射reflect.Value实现方法的调用

    本文主要介绍了Go语言反射reflect.Value实现方法的调用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Go语言官方依赖注入工具Wire的使用教程

    Go语言官方依赖注入工具Wire的使用教程

    依赖注入是一种实现控制反转且用于解决依赖性问题的设计模式。Golang 中常用的依赖注入工具主要有 Inject 、Dig 等。但是今天主要介绍的是 Go 团队开发的 Wire,一个编译期实现依赖注入的工具,感兴趣的可以了解一下
    2022-09-09
  • Golang使用反射的动态方法调用详解

    Golang使用反射的动态方法调用详解

    Go是一种静态类型的语言,提供了大量的安全性和性能。这篇文章主要和大家介绍一下Golang使用反射的动态方法调用,感兴趣的小伙伴可以了解一下
    2023-03-03
  • 详解Go中指针的原理与引用

    详解Go中指针的原理与引用

    在 Go 中,指针是强大而重要的功能,它允许开发人员直接处理内存地址并实现高效的数据操作,本文主要带大家了解下指针在 Go 中的工作原理以及对于编写高效、高性能代码的重要性,希望对大家有所帮助
    2023-09-09
  • Golang Makefile示例深入讲解使用

    Golang Makefile示例深入讲解使用

    一次偶然的机会,在 github 上看到有人用 Makefile,就尝试了一下,发现真的非常合适,Makefile 本身就是用来描述依赖的,可读性非常好,而且与强大的 shell 结合在一起,基本可以实现任何想要的功能
    2023-01-01

最新评论