这几天一直在研究 Go、Goroutines 和 Channels。问题是我想创建一个映射器,它有一个接受任何类型的函数chan。我试图用我能想到的唯一方法来解决这个问题,即传递chan interface{}而不是真实类型,但这显然不起作用。(如下例所示)所以我正在寻找正确的方法来做到这一点,并确认这甚至是正确的方法。适用的示例(已注释掉 ItemTwo 代码): https://play.golang.org/p/PlqPflP7Yf7不起作用的示例(已注释的 ItemTwo 代码): https://play.golang.org/p/xM89GVY2BoX我在这里列出了操场上的两个例子。第一个可以工作,但第二个由于 ItemTwo 代码处于活动状态而损坏。希望有人能在这里指出我正确的方向。谢谢。
1 回答
HUH函数
TA贡献1836条经验 获得超4个赞
问题是我想创建一个 Mapper,它有一个接受任何类型的 chan 的函数。
在 Go 的类型系统中你根本无法做到这一点。您必须决定类型,如果是类型,interface
您就必须使用该确切类型,并且所有函数签名都必须匹配。Go 中不存在协变/逆变。
最好的建议:停止尝试编写通用代码。这是可行的,但它很丑陋、缓慢且复杂。
- 1 回答
- 0 关注
- 75 浏览
添加回答
举报
0/150
提交
取消