Go 泛型从 2010 年 6 月到最终落地足足有四五个不同的实现版本。
早期版本引入新关键字 contract ,直到 2020 年官方宣布放弃 contract 而采用 interface 关键字来实现(也就是 FGG/FG 方案)。
顺带一提,FGG 方案的作者,也是 Java 泛型的作者🤣
interface 方案相比 contract 进行了大幅简化。除了 interface 定义,几乎没有引入什么新语法,对 caller (client) 来说完全无感、也不需要修改任何代码(编译器自动完成类型推断);
而且所有泛型都会在 编译期 被消除,实现了极致的向下兼容。
单说泛型这块,实在没什么可嫌弃的 |