【发布时间】:2025-12-27 17:35:15
【问题描述】:
我已经阅读了 Effective Go 和 Go 教程以及一些源代码,但是 interface {} 语法背后的确切机制对我来说有点神秘。我在尝试实现 heap.Interface 时第一次看到它,它似乎是某种容器(让我想起了一个 monad),我可以从中提取任意类型的值。
为什么 Go 被编写来使用它?这是泛型的某种解决方法吗?有没有比使用heap.Pop(&h).(*Foo) 取消引用它们更优雅的方法从heap.Interface 获取值(在堆指针指向Foo 类型的情况下)?
【问题讨论】: