gpt4 book ai didi

go - 是否可以将接口(interface)的参数类型留给在 Go 中实现它的接收器?

转载 作者:数据小太阳 更新时间:2023-10-29 03:37:08 26 4
gpt4 key购买 nike

基本上我想要一个接口(interface),它有一个 SetParams 方法,其声明声明它接收一个参数和方法的返回类型,但保留参数的返回类型给接收者。

类似这样的界面:

type ParamsInterface interface {
SetParams(<someType>) ParamsInterface
}

现在,当XStruct实现它时,参数的类型是XParams

type XStruct struct {
params XParams
}

func (x *XStruct) SetParams(params *XParams) ParamsInterface {
x.params = params
return x
}

但是YStruct实现的时候,参数的类型是YParams

type YStruct struct {
params YParams
}

func (y *YStruct) SetParams(params *YParams) ParamsInterface {
y.params = params
return y
}

最佳答案

这叫做泛型,你只能使用空接口(interface) interface{} 和类型转换。

这是关于 go 中泛型的文档:https://docs.google.com/document/d/1vrAy9gMpMoS3uaVphB32uVXX4pi-HnNjkMEgyAHX4N4/edit# .

这也可以帮助你:

How is the empty interface different than a generic?

Why no generics in Go?

这篇文章提出了一些如何在没有泛型的情况下生活的方法:https://appliedgo.net/generics/

在这里您可以找到泛型的代码生成器(在我看来这不是最好的主意)https://github.com/cheekybits/genny .

关于go - 是否可以将接口(interface)的参数类型留给在 Go 中实现它的接收器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47404497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com