Go中的开关语句

Go中的开关语句

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

  1. 表达式切换
  2. 类型切换

表达式切换

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

语法

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

重要的一点是

  • 表达式开关中的opstatement和optexpression都是可选的语句。
  • 如果optstatement和optexpression都存在,那么它们之间需要有一个分号(;)。
  • 如果switch不包含任何表达式,那么编译器就会认为该表达式为真。
  • 可选语句,即optstatement,包含简单的语句,如变量声明、增量或赋值语句,或函数调用等。
  • 如果一个变量出现在可选语句中,那么该变量的范围就被限制在该switch语句中。
  • 在switch语句中,case和default语句不包含任何break语句。但如果你的程序需要,你可以使用break和fallthrough语句。
  • 默认语句在switch语句中是可选的。
  • 如果一个case可以包含多个值,并且这些值用逗号(,)分开。
  • 如果一个case不包含任何表达式,那么编译器会认为te表达式为真。

例1 :

// Go program to illustrate the 
// concept of Expression switch
// statement
package main
  
import "fmt"
  
func main() {
      
    // Switch statement with both 
    // optional statement, i.e, day:=4
    // and expression, i.e, 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

例2 :

// Go program to illustrate the 
// concept of Expression switch
// statement
package main
  
import "fmt"
  
func main() {
    var value int = 2
      
    // Switch statement without an     
    // optional statement and 
    // expression
   switch {
       case value == 1:
       fmt.Println("Hello")
       case value == 2:
       fmt.Println("Bonjour")
       case value == 3:
       fmt.Println("Namstay")
       default: 
       fmt.Println("Invalid")
   }
  
}

输出

Bonjour

例3 :

// Go program to illustrate the 
// concept of Expression switch
// statement
package main
  
import "fmt"
  
func main() {
    var value string = "five"
      
    // Switch statement without default statement
    // Multiple values in case statement
   switch value {
       case "one":
       fmt.Println("C#")
       case "two", "three":
       fmt.Println("Go")
       case "four", "five", "six":
       fmt.Println("Java")
   }  
}

输出

Java

类型开关

当你想对类型进行比较时,就会使用类型转换。在这种切换中,案例中包含的类型将与切换表达式中的类型进行比较。

语法

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

重要的一点

  • 可选语句,即optstatement与switch表达式中类似。
  • 如果一个case可以包含多个值,并且这些值用逗号(,)分开。
  • 在type switch语句中,case和default语句不包含任何break语句。但是如果你的程序需要,你可以使用break和fallthrough语句。
  • 默认语句在类型切换语句中是可选的。
  • typeswitchexpression是一个表达式,其结果是一个类型。
  • 如果一个表达式使用:=操作符被分配到typewitchexpression中,那么该变量的类型就取决于case子句中的类型。如果case子句包含两个或多个类型,那么变量的类型就是 typeswitchexpression中创建的类型。

例子

// Go program to illustrate the 
// concept of Type switch
// statement
package main
  
import "fmt"
  
func main() {
    var value interface{}
    switch q:= value.(type) {
       case bool:
       fmt.Println("value is of boolean type")
       case float64:
       fmt.Println("value is of float64 type")
       case int:
       fmt.Println("value is of int type")
       default:
       fmt.Printf("value is of type: %T", q)
         
   }
}

输出

value is of type: <nil>

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程