在没有泛型的 Go 中实现泛型列表
Go 编程语言以其简单性而闻名,不支持泛型或继承。但是,它仍然提供了创建通用容器(例如列表)的方法。
使用接口实现通用列表
要创建通用列表,一种方法是使用接口类型,例如 Any。但是,使用此方法检查 NULL 值变得具有挑战性。
替代方案:使用代码生成
要克服使用接口的限制,请考虑代码生成。代码生成允许创建在编译时处理不同数据类型的通用容器。 [gocqlx](https://github.com/gocql/gocqlx) 等库使用这种方法。
使用字段类型存储对象
使用以下方式存储对象特定字段类型,您可以使用所需字段创建自定义结构并将其用作列表的元素类型。虽然 Go 没有参数化类型,但它确实具有类型声明,允许基于其他类型定义类型。
高级实现
对于更高级的需求,例如创建具有特定合适食物字段类型的动物列表时,您可以使用组合或反射技术探索自定义实现。然而,这些解决方案都很复杂,不建议实际使用。
注意:
值得注意的是,Go 缺乏泛型在大多数实际场景中并不是一个重大限制。它的理念强调代码的简单性和清晰性,这往往比泛型的好处更重要。
以上是如何在不使用泛型的情况下在 Go 中实现泛型列表?的详细内容。更多信息请关注PHP中文网其他相关文章!