去开关语句

  

10。开关语句

  

开关是一个条件语句,用于将表达式的值与可能匹配的选项列表进行比较,并根据匹配情况执行相应的代码块。它可以被认为是替代多个<代码>如果其他子句的常用方式。

  

看代码比文字更容易理解。让我们从一个简单的例子开始,它将把一个手指的编号作为输入,然后输出该手指对应的名字。比如0是拇指,1是食指等等。

  
 <代码类=" language-go ">包主要
  
  导入(
  “fmt”
  )
  
  函数main () {
  手指:=4
  开关的手指{
  案例1:
  fmt.Println(“拇指”)
  案例2:
  fmt.Println(“指数”)
  案例3:
  fmt.Println(“中产”)
  案例4:
  fmt.Println(“环”)
  例5:
  fmt.Println(“的”)
  
  }
  } 
  

在上述程序中,<代码> 将开关手指手指<代码> 的值与每个<代码>中> 手指>

  

在选项列表中,<代码>中> 主要。:18:2:在tmp/sandbox887814166/main.go:十六7

  
 <代码类=" language-go ">包主要
  
  导入(
  “fmt”
  )
  
  函数main () {
  手指:=4
  开关的手指{
  案例1:
  fmt.Println(“拇指”)
  案例2:
  fmt.Println(“指数”)
  案例3:
  fmt.Println(“中产”)
  案例4:
  fmt.Println(“环”)
  案例4://重复项
  fmt。Println(另一个“环”)
  例5:
  fmt.Println(“的”)
  
  }
  } 
  

默认情况(默认情况下)

  

我们每个人一只手只有5个手指。如果我们输入了不正确的手指编号会发生什么?这个时候就应该是属于默认情况。当其他情况都不匹配时,将运行默认情况。

  
 <代码类=" language-go ">包主要
  
  导入(
  “fmt”
  )
  
  函数main () {
  开关的手指:=8;手指{
  案例1:
  fmt.Println(“拇指”)
  案例2:
  fmt.Println(“指数”)
  案例3:
  fmt.Println(“中产”)
  案例4:
  fmt.Println(“环”)
  例5:
  fmt.Println(“的”)
  默认值://默认情况
  fmt。Println(“不正确的手指数量”)
  }
  } 
  

在上述程序中手指<代码> 的值是8,它不符合其中任何情况,因此会打印<代码>不正确的手指数量>   

您可能也注意到我们稍微改变了<代码> 手指变量的声明方式。 <代码>手指声明在了开关语句内。在表达式求值之前,开关可以选择先执行一个语句。在这行<代码>开关手指:=8;手指中,先声明了<代码> 手指变量,随即在表达式中使用了它。在这里,手指<代码> 变量的作用域仅限于这个开关内。

  

多表达式判断

  

通过用逗号分隔,可以在一个案件中包含多个表达式。

  
 <代码类=" language-go ">包主要
  
  导入(
  “fmt”
  )
  
  函数main () {
  信:="我"
  开关信{
  案例“a”、“e”、“我”、“o”、“u”://一个选项多个表达式
  fmt.Println(“元音”)
  默认值:
  fmt。Println(不是“元音”)
  }
  } 
  

在<代码>“a”,“e”,“我”、“o”、“u”: 这一行中,列举了所有的元音。只要匹配该项,则将输出<代码>元音

  

无表达式的开关/h3>   

开关语在句中,表达式是可选的,可以被省略。如果省略表达式,则表示这个开关语句等同于<代码>开关真正> 中>   

 <代码类=" language-go ">包主要
  
  导入(
  “fmt”
  )
  
  函数main () {
  num:=75
  {//切换表达式被省略了
  案例num祝辞=0,,num & lt;=50:
  fmt。Println (“num大于0小于50”)
  51例num祝辞=,,num & lt;=100:
  fmt。Println (“num大于51和不到100”)
  案例num祝辞=101:
  fmt。Println (num大于100)
  }
  
  } 
  

在上述代码中,开关中缺少表达式,因此默认它为真,真值会和每一个案件的求值结果进行匹配。

去开关语句