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

将接口方法的参数限制为几个允许的结构?

将接口方法的参数限制为几个允许的结构?

Go
暮色呼如 2023-01-03 15:33:08
假设我有一个接口:type Module interface {    Run(moduleInput x) error // x is the type of moduleInput}每个“模块”都将实现Run功能。然而,这moduleInput不是一个单一的结构——它应该能够接受任何结构但只允许结构,即不是interface{}(比如,只有moduleAInputs和moduleBInputs结构)。理想情况下Run,每个模块的函数都具有moduleXInputX 是示例模块的类型。moduleInput是否可以使用泛型或其他方式来限制类型?
查看完整描述

1 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

使用通用接口,限制为要限制的类型的联合:


// interface constraint

type Inputs interface {

    moduleAInputs | moduleBInputs

}


// parametrized interface

type Module[T Inputs] interface {

    Run(moduleInput T) error

}

请注意,该接口Module[T]现在可以由其方法与该接口的实例化相匹配的类型来实现。有关对此的全面解释,请参阅:如何实现通用接口?


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

添加回答

举报

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