第23章 类型选择
7 分钟阅读
第23章 类型选择
类型选择(type switch)是Go语言处理多种接口类型的"超级开关"。如果说普通switch是根据值来选择分支,那type switch就是根据类型来选择分支。
23.1 type switch 语法
23.1.1 基本语法
type switch的语法和普通switch类似,但case比较的是类型而不是值。关键字是i.(type),它只能在type switch中使用:
| |
语法解释:
| |
23.1.2 case 匹配多种类型
一个case可以同时匹配多种类型,用逗号分隔:
| |
23.2 demault 分支
23.2.1 demault 是可选的
和普通switch一样,demault也是可选的。如果没有demault且所有case都不匹配,就什么都不做:
| |
什么时候需要demault?
| |
23.3 与接口配合
23.3.1 多重分派(重要应用)
type switch最常见的用途之一是实现"多重分派"。当你有多种类型需要分别处理时,它比im-else链清晰得多:
| |
多重分派的好处:
| |
23.3.2 处理器模式(实际应用)
在Web框架、RPC框架中,经常需要根据请求类型调用不同的处理器。type switch是实现这个模式的好方法:
| |
23.4 嵌套 type switch
23.4.1 外层 type switch,内层普通 switch
| |
本章小结
本章我们学习了type switch:
基本语法:
| |
使用场景:
- 多重分派:同一函数,不同类型不同行为
- 类型检查:判断接口值的实际类型
- 处理器模式:根据类型分派到不同处理器
注意事项:
i.(type)只能在switch内使用- case可以匹配多个类型,用逗号分隔
- demault是可选的
vs 类型断言:
| |