Function 函数是否可以接受两种类似类型中的任何一种作为参数?

Function 函数是否可以接受两种类似类型中的任何一种作为参数?,function,go,struct,Function,Go,Struct,例如,假设我有一个名为calc的函数,它接受一个Foo作为参数。但是Bar与Foo非常相似,它也可以用于calc函数--Foo和Bar共享我需要执行的3或4个字段calc,但是Bar还有一些其他字段 有没有办法编写一个函数,以便传入Foo或Bar 使用类似于calc的参数的语言,以便在函数中使用满足契约的任何东西。Go中的等价物是什么?有两种解决方案: 在calc 等待添加泛型以继续: 我们将利用从围棋社区收集的反馈来决定如何 继续前进。如果草稿设计很受欢迎且不需要 如果发生重大变化,下一步

例如,假设我有一个名为
calc
的函数,它接受一个
Foo
作为参数。但是
Bar
Foo
非常相似,它也可以用于
calc
函数--
Foo
Bar
共享我需要执行的3或4个字段
calc
,但是
Bar
还有一些其他字段

有没有办法编写一个函数,以便传入
Foo
Bar


使用类似于
calc
的参数的语言,以便在函数中使用满足契约的任何东西。Go中的等价物是什么?

有两种解决方案:

  • calc

  • 等待添加泛型以继续:

  • 我们将利用从围棋社区收集的反馈来决定如何 继续前进。如果草稿设计很受欢迎且不需要 如果发生重大变化,下一步将是正式的语言变化 提议设定期望值,如果每个人都对 设计草图,无需任何进一步调整, 最早可以将仿制药添加到Go的是Go 1.17 计划于2021年8月发布。当然,在现实中可能会有 不可预见的问题,所以这是一个乐观的时间表;我们不能 做出明确的预测


    您仍然可以使用界面,但是你必须为这两种类型定义getter/setter方法。这意味着我必须在
    Foo
    Bar
    中提供像
    GetQuarter
    GetYear
    这样的函数,以便
    calc
    可以执行它的计算?我肯定你知道Go目前没有泛型,因此,不可能有直接的等价物。您可以创建基于行为的接口,也可以进行运行时检查。@JimB是的,我认为您是对的