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」,在它們上定義方法,並讓用戶實例化這些類型並使用它們。 –