在业务场景下,如果有多条件,怎么处理? 比如条件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")
}