golang 使用switch case多个值,犯的错
今天写golang switch case时,带入了python rust语法,记录一下,错误代码如下
package main
import "fmt"
func main() {
a := 1
switch a {
case 0:
fmt.Println( "zero" )
case 1 | 2:
fmt.Println( "one or two" )
default :
fmt.Println( "don't care" )
}
}
结果打印是 don't care,半天没看出为什么。原因出在 case 1 | 2,实际等效于 case 3,a := 1 | 2 表示 按位或运算(bitwise OR),正确代码如下
package main
import "fmt"
func main() {
a := 1
switch a {
case 0:
fmt.Println( "zero" )
case 1, 2:
fmt.Println( "one or two" )
default :
fmt.Println( "don't care" )
}
}
以上逻辑python实现如下
if __name__ = = '__main__' :
a = 1
match a:
case 0 :
print ( "zero" )
case 1 | 2 :
print ( "one or two" )
case _:
print ( "don't care" )
同样的rust实现如下
fn main() {
let a = 1;
match a {
0 => {
println!("zero");
},
1 | 2 => {
println!("one or two");
},
_ => {
println!("don't care");
}
}
}

浙公网安备 33010602011771号