Golang 教程
Golang 控制语句
Golang 函数 & 方法
Golang 切片 & 数组
Golang 结构体
Golang 字符串
Golang 接口
Golang 指针
Golang 并发
Golang 异常(Error)
Golang 其他杂项

Go 语言Switch语句

时间:2023年06月10日 阅读:243
以下内容仅是站长或网友个人学习笔记、总结和研究收藏。不保证正确性,因使用而带来的风险与本站无关!
淘客轩-衣食住行外卖生活好助手

switch语句是一个多路分支语句。它提供了一种有效的方法,可以根据表达式的值(也称为case)将执行转移到代码的不同部分。Go语言支持两种类型的switch语句:

  1. 表达式switch

  2. 类型switch

表达式switch

表达式switch类似于C,C ++,Java语言中的switch语句。它提供了一种简单的方法,可以根据表达式的值将执行分派到代码的不同部分。

语法:

switch optstatement; optexpression{
    case expression1: Statement..
    case expression2: Statement..
    ...
    default: Statement..
}

重要事项:

  • 表达式switch中的optstatement和optexpression都是可选语句。

  • 如果同时存在optstatementoptpression,则在它们之间需要使用分号(;)。

  • 如果switch不包含任何表达式,则编译器会假定该表达式为true。

  • 可选语句,即optstatement包含简单的语句,例如变量声明,递增或赋值语句或函数调用等。

  • 如果可选语句中存在变量,则该变量的范围限于该switch语句。

  • 在switch语句中,case和default语句不包含任何break语句。但是如果您的程序需要,您可以使用break和fallthrough语句。

  • 默认(default)语句在switch语句中是可选的。

  • 如果一个case可以包含多个值,并且这些值之间用逗号(,)分隔。

  • 如果一个case不包含任何表达式,则编译器假定这个表达式为true。

获取指定数字是星期几的示例:

package main

import "fmt"

func main() {

    // Switch 语句同时使用两种语句, 如可选语句, day:=4 和表达式 如:day
    switch day := 4; day {
    case 1:
        fmt.Println("Monday")
    case 2:
        fmt.Println("Tuesday")
    case 3:
        fmt.Println("Wednesday")
    case 4:
        fmt.Println("Thursday")
    case 5:
        fmt.Println("Friday")
    case 6:
        fmt.Println("Saturday")
    case 7:
        fmt.Println("Sunday")
    default:
        fmt.Println("Invalid")
    }

}

输出:

Thursday

switch语句不带可选语句和表达式的示例:

package main 
  
import "fmt"
  
func main() { 
    var value int = 2 
      
      // switch语句不带可选语句和表达式
   switch { 
       case value == 1: 
       fmt.Println("Hello") 
       case value == 2: 
       fmt.Println("Bonjour") 
       case value == 3: 
       fmt.Println("Namstay") 
       default:  
       fmt.Println("Invalid") 
   } 
  
}

输出:

Bonjour

下面是没有默认语句的switch语句,case语句中的多个值:

package main

import "fmt"

func main() {
    var value string = "five"

    //没有默认语句的switch语句,case语句中的多个值
    switch value {
    case "one":
        fmt.Println("C#")
    case "two", "three":
        fmt.Println("Go")
    case "four", "five", "six":
        fmt.Println("Java")
    }
}

输出:

Java

类型switch

当您想比较类型时,使用类型switch。在此switch中,case包含要与switch表达式中出现的类型进行比较的类型。

语法:

switch optstatement; typeswitchexpression{
    case typelist 1: Statement..
    case typelist 2: Statement..
    ...
    default: Statement..
}

重要事项:

  • 可选语句,即optstatement,它与switch表达式中的类似。

  • 如果一个case可以包含多个值,并且这些值之间用逗号(,)分隔。

  • 在类型switch语句中,case和default语句不包含任何break语句。但是,如果程序需要,则可以使用break和fallthrough语句。

  • 在类型switch语句中,默认语句是可选的。

  • typeswitchexpression是一个表达式,其结果是一个类型。

  • 如果使用:=运算符在typeswitchexpression中分配了表达式,则该变量的类型取决于case子句中的类型。 如果case子句包含两种或更多种类型,则变量的类型就是在typeswitchexpression中创建变量的类型。

package main

import "fmt"

func main() {
    var value interface{}
    switch q := value.(type) {
    case bool:
        fmt.Println("值是布尔型")
    case float64:
        fmt.Println("值是float64类型")
    case int:
        fmt.Println("值是int类型")
    default:
        fmt.Printf("值的类型是: %T", q)

    }
}

输出:

值的类型是: <nil>
打赏

本文地址:https://www.momojc.cn/golang/go-switch-statement.html

关于本站 | 隐私政策 | 免责声明 | 广告合作 | 我要投稿 | 后台管理

CopyRight © 2023-2024 MOMO教程 WWW.MOMOJC.CN , All Rights Reserved.

站长E-mail:378074730@qq.com 网站已运行:  运行时长:0.044 秒

京ICP备20029690号-1京ICP备20029690号-2 京公网安备11011402013892号京公网安备11011402013892号 中国互联网违法和不良信息举报中心 网络违法犯罪举报网站

本网站托管于 腾讯云 .由网站卫士提供网站加速和攻击防御服务 提供CDN加速/防御服务.由zblogcn强力驱动 又拍云提供CDN加速/云存储服务 51la网站统计