2
我在package xyz
中有一个名为Service
的结构,其中多个API封装(Api1
,Api2
)将用作基础。我想谁在使用包调用像每个API方法的人:xyz.Api1.MethodA(..)
和xyz.Api2.MethodB(..)
Go结构类型在一个已经键入的结构上
现在我做这样的事情
type struct api1 {
*Service
}
var Api1 *api1
func init() {
Api1 = &api1{
&Service{
...
}
}
}
func (a *api1) MethodA {
...
}
我不是这一点,因为它的风扇看起来像很多样板。我宁愿让Api1成为一个Service结构,但每个服务都会有不同的方法,所以我不认为这是可能的,除非我能做到type Service api1 {...}
?
是否有另一种方法可以让用户获得期望的呼叫类似xyz.Api1.MethodA(..)
而不必为每个API创建新的结构类型,并且没有太多的样板文件?
为什么不干脆让'API1 '和'api2'分开包?另外,API上的方法是否以任何方式使用'Service'? –
是的,有些方法会调用'Service'方法。如果我要将'api1'和'api2'分离到它们自己的包中,我可以参考将在父包中的'Service'吗?或者我想问题是,导入可以使用相对路径,例如'进口“../ xyz”'? –
建议不要因为各种原因使用相对路径,但是,您可以使用它。另一种可能性是创建两个新的导出类型“API1Service”和“API2Service”,在它们上定义方法,并让用户实例化这些类型并使用它们。 –