Go中的开关语句
switch语句是一个多路分支语句。它提供了一种有效的方式,根据表达式的值(也称为案例)将执行转移到代码的不同部分。Go语言支持两种类型的切换语句。
- 表达式切换
- 类型切换
表达式切换
表达式开关类似于C、C++、Java语言中的开关语句。它提供了一种简单的方法,根据表达式的值将执行分配到代码的不同部分。
语法
重要的一点是
- 表达式开关中的opstatement和optexpression都是可选的语句。
- 如果optstatement和optexpression都存在,那么它们之间需要有一个分号(;)。
- 如果switch不包含任何表达式,那么编译器就会认为该表达式为真。
- 可选语句,即optstatement,包含简单的语句,如变量声明、增量或赋值语句,或函数调用等。
- 如果一个变量出现在可选语句中,那么该变量的范围就被限制在该switch语句中。
- 在switch语句中,case和default语句不包含任何break语句。但如果你的程序需要,你可以使用break和fallthrough语句。
- 默认语句在switch语句中是可选的。
- 如果一个case可以包含多个值,并且这些值用逗号(,)分开。
- 如果一个case不包含任何表达式,那么编译器会认为te表达式为真。
例1 :
输出
例2 :
输出
例3 :
输出
类型开关
当你想对类型进行比较时,就会使用类型转换。在这种切换中,案例中包含的类型将与切换表达式中的类型进行比较。
语法
重要的一点
- 可选语句,即optstatement与switch表达式中类似。
- 如果一个case可以包含多个值,并且这些值用逗号(,)分开。
- 在type switch语句中,case和default语句不包含任何break语句。但是如果你的程序需要,你可以使用break和fallthrough语句。
- 默认语句在类型切换语句中是可选的。
- typeswitchexpression是一个表达式,其结果是一个类型。
- 如果一个表达式使用:=操作符被分配到typewitchexpression中,那么该变量的类型就取决于case子句中的类型。如果case子句包含两个或多个类型,那么变量的类型就是 typeswitchexpression中创建的类型。
例子
输出