Go语言 C中的空指针

4zcjmb1e  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(89)

我一直在玩Go语言,做一些数据结构库,我有一个大问题。我希望数据结构能够包含任何类型,但我在Go中看不到任何方法来做到这一点,因为你不能声明void指针,而且它们没有像NSObject这样的类,所有东西都继承自它。如何在Go中实现同样的功能?

ntjbwcob

ntjbwcob1#

根据the Go Programming Language Specification
一个型别实作包含其方法的任何子集的任何介面,因此可能实作数个不同的介面。例如,所有类型都实现了 *empty接口 *:

interface{}

如果您在该文档中搜索interface{},您将看到很多示例,说明如何使用它来完成您想要的任务。

更新(2023-09-27):从Go 1.18(2022年3月)开始,Go提供了内置别名any。根据其文件:

type any = interface{}

any是interface{}的别名,在所有方面都等效于interface{}。
这一增加与Go 1.18中对泛型的支持有关,它稍微重新定义了接口的工作方式(尽管是以完全兼容的方式)。以下是当前的规范语言:
作为接口类型集成员的每个类型都实现该接口。任何给定的类型都可以实现几个不同的接口。例如,所有类型都实现了 empty interface,它代表所有(非接口)类型的集合:

interface{}

为了方便起见,预先声明的类型any是空接口的别名。

相关问题