【发布时间】:2016-07-24 16:39:23
【问题描述】:
在我编写 Go 代码的过程中,我从未遇到过,也没有想到需要使用指向接口的指针的案例,除了可能编写一个大量使用运行时反射的库。 Some people 暗示这样做是有正当理由的,但似乎从未进一步详细说明。这个特性似乎也让刚开始使用 Go 的开发人员感到困惑。
main.go:22: cannot use &a (type *A) as type **interface {} in argument to run
什么是使用接口指针的好例子?
【问题讨论】:
-
你只是看错了。为什么你不应该允许它?如果没有令人信服的理由不这样做(就我而言没有),就没有理由明确不允许这样做。
-
没有看到关于该主题的任何混淆。我读了很多关于人们学习 Go 的文章,并指出了一些奇怪或不好的东西,但从来没有指向接口。这是在实践中几乎不需要的东西,所以你甚至不应该考虑。限制它 - 它会使语言更复杂而没有任何明显的好处。这是可能的,自然不符合规范,所以为什么要限制它。我什至不记得在任何 Go 教程或书籍中看到过此功能。
-
Go 程序在 nil 指针上实现接口是完全合法的。
标签: pointers reflection go interface