是否可以将接口参数的类型保留给在Go中实现它的接收器?

时间:2017-11-21 03:01:40

标签: go types interface

基本上我想要一个具有// Always import AppOne either a blank string or app so that app.js doesnt change. var appOne = import('appOne'); 方法的接口,其声明声明它接收一个参数,以及方法的返回类型,但是将参数的返回类型保留到接收器

像这样的界面:

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

1 个答案:

答案 0 :(得分:0)

这称为泛型,您只能使用空接口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