Go 泛型主要设计者介绍使用泛型的最佳时机
近期一篇主题为Go 泛型导致代码运行速度变慢的文章引起了广泛讨论。因为 Go 开发者对“泛型”这项特性期盼已久,但最后却发现有所落差。 Go 泛型主要设计者 Ian Lance Taylor 也留意到了相关的讨论,于是近日他在 Go 官方博客发表了自己 2021 年的演讲——《When To Use Generics》,来介绍使用 Go 泛型的最佳时机。 上文提到的文章指出,从历史上看,C++、D 乃至 Rust 等系统语言一直采用单态化方法实现泛型。然而,Go 1.18 的泛型实现并不完全依靠单态化 (Monomorphization),而是采用了一种被称为"GCShape stenciling with Dictionaries"的部分单态化技术。这种方法的好处是可以大幅减少代码量,但在特定情况下,会导致代码速度变慢。 Ian Lance Taylor 表示,Go 的通用开发准则有要求:开发者应通过编写代码而不是定义类型来编写 Go 程序。当涉及到泛型时,如果通过定义类型参数约束来编写程序,那一开始就走错了路。正解应该是从编写函数开始,当明确了类型参数的作用后,再添加类型参数就很容...
