如何在具有接受多种类型的 chan 参数的结构上创建 func?

这几天一直在研究 Go、Goroutines 和 Channels。

问题是我想创建一个映射器,它有一个接受任何类型的函数chan。我试图用我能想到的唯一方法来解决这个问题,即传递chan interface{}而不是真实类型,但这显然不起作用。(如下例所示)

所以我正在寻找正确的方法来做到这一点,并确认这甚至是正确的方法。

适用的示例(已注释掉 ItemTwo 代码): https://play.golang.org/p/PlqPflP7Yf7

不起作用的示例(已注释的 ItemTwo 代码): https://play.golang.org/p/xM89GVY2BoX

我在这里列出了操场上的两个例子。第一个可以工作,但第二个由于 ItemTwo 代码处于活动状态而损坏。

希望有人能在这里指出我正确的方向。谢谢。


白衣非少年
浏览 76回答 1
1回答

HUH函数

问题是我想创建一个 Mapper,它有一个接受任何类型的 chan 的函数。在 Go 的类型系统中你根本无法做到这一点。您必须决定类型,如果是类型,interface您就必须使用该确切类型,并且所有函数签名都必须匹配。Go 中不存在协变/逆变。最好的建议:停止尝试编写通用代码。这是可行的,但它很丑陋、缓慢且复杂。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go