优先级从上往下从大到小, 但是fallthrough(继续向下走case)
switch执行速度要比if快, 如果拿switch当if用, 执行速度一样
// Switch
switch a {
case 1:
case 2:
case 3,4: // 可以让case选择多个值
break // 打破Switch
}
switch { // Switch当If else使用
case a > 1:
case a == 0:
fallthrough // 必须在代码块的结尾, 继续往下走case而不跳出
}
switch a > 1 { // 还能放Bool
case true:
case false:
}
// 甚至还能放Type=.=好玩
// 以下是从Golang官方Github找到的一个经典案例
// Unpack 4 bytes into uint32 to repack into base 85 5-byte.
var v uint32
switch len(src) {
default:
v |= uint32(src[3])
fallthrough
case 3:
v |= uint32(src[2]) << 8
fallthrough
case 2:
v |= uint32(src[1]) << 16
fallthrough
case 1:
v |= uint32(src[0]) << 24
}