Io sono di veramente nuovo per golang e sto cercando di capire come incapsulamento funziona davvero in go.
Ho la seguente struttura
-- package a
-a_core.go
-a.go
-models.go
-- main.go
In modelli.andare ho struct per la richiesta e le risposte per una chiamata api,
un.vai ha una struttura vuota, che è privato e di un'interfaccia pubblica, che voglio esporre con vari metodi
a_core.andare solo la logica di business che sarebbe stato chiamato nella mia implementazione dell'interfaccia
Allora, io ho un principale.andare dove ho appena chiamata l'interfaccia pubblica.
codice in un.andare
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) {
}
In main.andare, chiamo l'interfaccia mia prima creare il MyData puntatore con valori
data := &a.MyData{
/////
}
result, err := a.MyFunc.Create(data)
Ho il seguente errore quando faccio questo,
troppo pochi argomenti nella chiamata a un.MyFunc.Creare
non è possibile utilizzare i dati (variabili di tipo *a.MyData) come.MyFunc valore in argomento.MyFunc.Creare: manca il metodo CreatecompilerInvalidIfaceAssign
Si prega di cosa sto facendo di sbagliato?