在业务场景下,如果有多条件,怎么处理? 比如条件isModifyName
是否修改姓名,条件isModifyAge
是否修改姓名。
我们可以使用if else
来拼凑出4个条件,那么怎么使用switch case
呢,switch case
是比if else
效率高的,可读性也更好,所以在条件多于2个的时候,会优先选择switch case
。
方式一:
case相当于一个if
1
2
3
4
5
6
7
8
9
10
11
12
13
|
isModifyName := 1
isModifyAge := 1
switch {
case isModifyName == 0 && isModifyAge == 0:
fmt.Println("all not modify")
case isModifyName == 1 && isModifyAge == 1:
fmt.Println("all modify")
case isModifyName == 0 && isModifyAge == 1:
fmt.Println("age modify")
case isModifyName == 1 && isModifyAge == 0:
fmt.Println("name modify")
}
|
方式二:
我们可以巧妙地使用位运算来处理多个条件,将多个值融合成二进制的值,然后可以很容易的拼凑出来4个条件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
isModifyName := 1
isModifyAge := 1
modify := isModifyName<<1 + isModifyAge
switch modify {
case 0: // 都未修改
fmt.Println("all not modify")
case 1: // 修改age
fmt.Println("age modify")
case 2: // 修改名称
fmt.Println("name modify")
case 3: // 都修改
fmt.Println("all modify")
}
|