我一直在尝试使用 Go 制作一些数据结构库,但我遇到了一个大问题。我希望数据结构能够包含任何类型,但我在 Go 中看不到任何方法可以做到这一点,因为你不能声明 void 指针,而且它们没有像 NSObject 这样所有东西都继承自的类。我如何在 Go 中实现相同的功能?
根据Go编程语言规范:
类型实现包含其方法的任何子集的任何接口,因此可以实现多个不同的接口。例如,所有类型都实现空接口:
interface{}
如果您在该文档中搜索
interface{}
,您会看到很多示例,说明如何使用它来执行您想要的操作。
更新(2023-09-27):从 Go 1.18(2022 年 3 月)开始,Go 提供了内置别名
any
。根据其文档:
type any = interface{}
any 是interface{} 的别名,在所有方面都等同于interface{}。
此添加与 Go 1.18 中添加的泛型支持相关,它稍微重新概念化了接口的工作方式(尽管以完全兼容的方式)。这是当前的规范语言:
作为接口类型集成员的每个类型都实现该接口。任何给定类型都可以实现多个不同的接口。例如,所有类型都实现空接口,它代表所有(非接口)类型的集合:
interface{}
为了方便起见,预先声明的类型
是空接口的别名。any