Sunt foarte nou la golang și am încercat să văd cât de încapsulare într-adevăr funcționează, în du-te.
Am urmatoarea structura
-- package a
-a_core.go
-a.go
-models.go
-- main.go
În modele.du-te am structs pentru cerere și răspunsuri pentru un apel api,
o.du-te gol struct, care este privată și o interfață publică, ceea ce vreau să expun cu diverse metode
a_core.merge doar ca are ceva logica de afaceri care ar fi numit în interfața de implementare
Apoi, am main.du-te unde am sunat interfața publică.
cod într-un.du-te
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) {
}
În principal.du-te, chem interfață prima mea crea MyData pointer cu valori
data := &a.MyData{
/////
}
result, err := a.MyFunc.Create(data)
I a lua următoarea eroare când fac asta,
prea puține argumente în apel la un.MyFunc.Crea
nu poate folosi datele (variabile de tip *un.MyData) ca.MyFunc valoare în argument pentru un.MyFunc.Crea: lipsă metoda CreatecompilerInvalidIfaceAssign
Te rog cu ce am gresit?