概述
如果我们需要匹配某些情况的时候,比如说给考试分等级,90分以上为A,70分以上为B,60分以下为C,这种情况,我们发现,如果使用if条件语句的话,实现起来是十分复杂的,所以就有了选择语句switch。
Go 的switch相较于Java和、C的switch语句更加灵活方便。
语法
基本语法
Go 的switch无需break
,避免了条件击穿的问题,Go 会自动帮我们匹配到合适的switch
语句,就不再执行下面一行的代码了,具体的语法格式如下:
switch 需要判断的变量{
case 情况A :
// 执行的代码
case 情况B :
// 执行的代码
case 情况C :
// 执行的代码
case 情况D :
// 执行的代码
default:
// 都不匹配的情况下执行
}
写一个小Demo,如果分数90以上分为A,70分以上为B,60分以上为C,60分以下为D。
代码语言:javascript复制var marks int = 90
switch {
case marks >= 90 :
println("A")
case marks<90 && marks>=70 :
println("B")
case marks<70 && marks>=60 :
println("C")
default:
println("D" );
}
default case
如果我们写的几种情况都匹配不上的话,Go 会默认帮我们匹配default
的这种情况,需要注意的是Go 的default
不是只能放在最后,而是可以放在任何的位置。
var marks int = 30
switch {
case marks >= 90 :
println("A")
case marks<90 && marks>=70 :
println("B")
default:
println("D" );
case marks<70 && marks>=60 :
println("C")
}
多case的情况
如果我们需要匹配多种情况,比如我们的元音辅音,是没有任何数学上的规律,仅仅只是需要匹配多个值,我们就可以在case上不断加条件,变成多case的情况。
代码语言:javascript复制word := "i"
switch word {
case "a", "e", "i", "o", "u":
println("元音")
default:
println("辅音")
}
fallthrough
我们前面说过,如果Go 的switch
匹配到了某种情况是不会再去执行下面的语句了,如果我们想要继续执行下面代码的效果就可以使用fallthrough
,需要注意的是fallthrough
会强制执行后面的case
里面的代码,不会去判断case
里面的情况是否是真。
num := 30
switch {
case num < 50:
println("小于40")
fallthrough
case num < 70:
println("小于70")
fallthrough
case num < 90:
println("小于90")
}