知识卡片
类型开关作为显式的运行时多态
内容
面向对象语言处理”同一操作对不同类型有不同行为”通常靠多态——把行为分散定义在各个类型自己的方法里,调用方不用关心具体类型。类型开关守护如果用:=赋值,产生的变量在每个case分支里会拥有该分支对应的具体类型(而非笼统的接口类型)。发散:这是”隐式多态”和”显式类型测试”两种应对多类型场景的路数并存——多态更适合类型集合稳定、行为该封装进类型自身的场景,类型开关更适合类型集合是外部数。
参考来源
- 位置:《Go语言程序设计》第5章《过程式编程》(源文件:_epub-src/OEBPS/text00039.html)
- 结论依据:原文在该章节围绕“面向对象语言处理"同一操作对不同类型有不同行为"通常靠多态——把行为分散定义在各个类型自己的方法里,调用方不用…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。
- 原始内容:原始的 for 循环时(参见5.3节)。 自动插入分号的一个重要结果是一个右大括号无法自成一行。 // 正确代码 // 错误代码 (不能通过编译) for i := 0; i < 5; i++ { for i := 0; i < 5; i++ fmt.Println(i) { } fmt.Println(i) } 上面右边的代码不能编译,…