Go 相当于 C 中的 void 指针

问题描述 投票:0回答:1

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

pointers go
1个回答
39
投票

根据Go编程语言规范

类型实现包含其方法的任何子集的任何接口,因此可以实现多个不同的接口。例如,所有类型都实现空接口

interface{}

如果您在该文档中搜索

interface{}
,您会看到很多示例,说明如何使用它来执行您想要的操作。


更新(2023-09-27):从 Go 1.18(2022 年 3 月)开始,Go 提供了内置别名

any
。根据其文档

type any = interface{}

any 是interface{} 的别名,在所有方面都等同于interface{}。

此添加与 Go 1.18 中添加的泛型支持相关,它稍微重新概念化了接口的工作方式(尽管以完全兼容的方式)。这是当前的规范语言:

作为接口类型集成员的每个类型都实现该接口。任何给定类型都可以实现多个不同的接口。例如,所有类型都实现空接口,它代表所有(非接口)类型的集合:

interface{}

为了方便起见,预先声明的类型

any
是空接口的别名。

© www.soinside.com 2019 - 2024. All rights reserved.