1 回答
TA贡献1831条经验 获得超4个赞
通过使用接口。两者兼而有之,并实现一个接口,该接口具有获取(返回)类型的方法。那么你只需要一个需要这个接口类型值的函数,就可以调用接口定义的方法。然后,您可以传递 值 或 ,或者实现该接口的任何其他类型。A1B1Execute()A1B1
例如:
type HasType interface {
GetType() string
}
func (a A1) GetType() string {
return a.Spec.Type
}
func (b B1) GetType() string {
return b.Spec.Type
}
func Execute(ctx context.Context, foo HasType, Client client.Client) error {
if foo.GetType() == "test" {
}
}
你可以这样称呼它:
var a A1 = ...
var b B1 = ...
Execute(ctx, a, client)
Execute(ctx, b, client)
请参阅为什么 Golang 中需要接口?
另请注意,在此特定示例中,您可以只传递类型而不是 and ,因此可以省略接口和方法声明。A1B1
例如,你可以这样创建:Execute()
func Execute(ctx context.Context, typ string, Client client.Client) error {
if typ == "test" {
}
}
并这样称呼它:
var a A1 = ...
var b B1 = ...
Execute(ctx, a.Spec.Type, client)
Execute(ctx, b.Spec.Type, client)
- 1 回答
- 0 关注
- 81 浏览
添加回答
举报