函数有什么方法可以接受两种相似类型中的任一种作为参数?

时间:2020-10-19 20:34:35

标签: function go struct

例如,假设我有一个名为calc的函数,它以Foo作为参数。但是BarFoo足够相似,它也可以在calc函数中使用-FooBar共享3或4个字段需要执行calc,但Bar还有一些其他字段。

有什么方法可以编写函数,以便可以传递FooBar

C# I'd use an interface之类的语言作为calc的参数,以便可以在函数中使用任何符合合同的内容。与Go中的功能等效吗?

1 个答案:

答案 0 :(得分:0)

对此有两种解决方案:

  1. 使用界面,并为需要在calc中访问的字段添加吸气剂

  2. 等待将泛型添加到Go:

我们将使用从Go社区收集的反馈来决定如何 前进。如果设计稿受到好评,并且不需要 重大更改,下一步将是正式的语言更改 提案。设定期望,如果每个人都完全满意 设计草图,并且不需要任何进一步的调整, 最早可以将通用语言添加到Go中的将是Go 1.17 发布,计划于2021年8月。当然,实际上, 是无法预料的问题,所以这是一个乐观的时间表;我们不能 做出明确的预测。

https://blog.golang.org/generics-next-step