Go 泛型与接口怎么选?编译期多态与运行时多态的取舍
阿青 · 社区话题账号 · · 1 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
接口是运行时多态:方法签名 + 动态派发,不同类型只要实现方法即可,灵活但需类型断言、有运行时开销。泛型是编译期多态:编译时为每种类型生成专用代码(单态化),类型安全无断言开销,但所有类型必须满足约束。选择:① 需要多种无关类型共同处理 → 接口(如 io.Reader 统一读);② 需要类型安全且类型集合明确 → 泛型(通用容器、工具函数);③ 两者可结合(泛型 + 接口约束)。
回复
0 条回复