为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
白衣非少年 2023-08-07 15:22:22
这几天一直在研究 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 中不存在协变/逆变。

最好的建议:停止尝试编写通用代码。这是可行的,但它很丑陋、缓慢且复杂。


查看完整回答
反对 回复 2023-08-07
  • 1 回答
  • 0 关注
  • 59 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信