我一直在玩Go语言,做一些数据结构库,我有一个大问题。我希望数据结构能够包含任何类型,但我在Go中看不到任何方法来做到这一点,因为你不能声明void指针,而且它们没有像NSObject这样的类,所有东西都继承自它。如何在Go中实现同样的功能?
ntjbwcob1#
根据the Go Programming Language Specification:一个型别实作包含其方法的任何子集的任何介面,因此可能实作数个不同的介面。例如,所有类型都实现了 *empty接口 *:
interface{}
如果您在该文档中搜索interface{},您将看到很多示例,说明如何使用它来完成您想要的任务。
更新(2023-09-27):从Go 1.18(2022年3月)开始,Go提供了内置别名any。根据其文件:
any
type any = interface{}
any是interface{}的别名,在所有方面都等效于interface{}。这一增加与Go 1.18中对泛型的支持有关,它稍微重新定义了接口的工作方式(尽管是以完全兼容的方式)。以下是当前的规范语言:作为接口类型集成员的每个类型都实现该接口。任何给定的类型都可以实现几个不同的接口。例如,所有类型都实现了 empty interface,它代表所有(非接口)类型的集合:
为了方便起见,预先声明的类型any是空接口的别名。
1条答案
按热度按时间ntjbwcob1#
根据the Go Programming Language Specification:
一个型别实作包含其方法的任何子集的任何介面,因此可能实作数个不同的介面。例如,所有类型都实现了 *empty接口 *:
如果您在该文档中搜索
interface{}
,您将看到很多示例,说明如何使用它来完成您想要的任务。更新(2023-09-27):从Go 1.18(2022年3月)开始,Go提供了内置别名
any
。根据其文件:any是interface{}的别名,在所有方面都等效于interface{}。
这一增加与Go 1.18中对泛型的支持有关,它稍微重新定义了接口的工作方式(尽管是以完全兼容的方式)。以下是当前的规范语言:
作为接口类型集成员的每个类型都实现该接口。任何给定的类型都可以实现几个不同的接口。例如,所有类型都实现了 empty interface,它代表所有(非接口)类型的集合:
为了方便起见,预先声明的类型
any
是空接口的别名。