gpt4 book ai didi

interface - Go 中 "interface {}"语法的作用是什么?

转载 作者:IT王子 更新时间:2023-10-29 01:25:43 26 4
gpt4 key购买 nike

我已经通读了 Effective Go 和 Go Tutorials 以及一些源代码,但是 interface {} 语法背后的确切机制对我来说有点神秘。我第一次看到它是在尝试实现 heap.Interface 时,它似乎是某种容器(有点让我想起 monad),我可以从中提取任意类型的值。

为什么要编写 Go 来使用它?它是泛型的某种解决方法吗?有没有比使用 heap.Pop(&h).(*Foo) 取消引用它们更优雅的方式从 heap.Interface 获取值(在这种情况下指向 Foo 类型的堆指针?

最佳答案

interface{} 是一个可以容纳一切的通用盒子。 Go 中的接口(interface)定义了一组方法,任何实现这些方法的类型都符合该接口(interface)。 interface{} 未定义任何方法,因此根据定义,每个类型都符合此接口(interface),因此可以保存在 interface{} 类型的值中。

它根本不像泛型。相反,它是一种放宽类型系统并说“任何值都可以传递到这里”的方法。 C 中此功能的等效项是 void * 指针,但在 Go 中您可以查询所保存值的类型。

关于interface - Go 中 "interface {}"语法的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4939398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com