Jsem opravdu nový golang a já se snažím vidět, jak zapouzdření opravdu funguje v go.
Mám následující strukturu
-- package a
-a_core.go
-a.go
-models.go
-- main.go
V modely.šel jsem structs pro žádosti a odpovědi na volání api,
a.jít má prázdný struct, které je soukromé a veřejné rozhraní, které chci vystavit s různými metodami
a_core.jít jen má některé obchodní logiky, který by volal v mé implementace rozhraní
Pak mám hlavní.jít tam, kde jsem jen zavolat na veřejné rozhraní.
kód v.jít
package a
type myFunction struct{}
type MyFunc interface {
Create(myData *MyData) (*MyData, error)
Fetch(test string)
Delete(test string)
}
//Concrete implementations that can be accessed publicly
func (a *myFunction) Create(data *MyData) (*MyData, error) {
return nil, nil
}
func (a *myFunction) Fetch(test string) {
}
func (a *myFunction) Delete(test string) {
}
V hlavní.jít, zavolám rozhraní moje první vytvořit MyData ukazatele s hodnotami
data := &a.MyData{
/////
}
result, err := a.MyFunc.Create(data)
Dostanu následující chybu, když jsem to udělat,
příliš málo argumentů ve volání.MyFunc.Vytvořit
nelze použít data (proměnné typu *.MyData).MyFunc hodnota v argumentu.MyFunc.Vytvořit: chybí metoda CreatecompilerInvalidIfaceAssign
Prosím co dělám špatně?