Je suis vraiment nouveau dans golang et je suis en train de voir comment l'encapsulation fonctionne vraiment en aller.
- Je avoir la structure suivante
-- package a
-a_core.go
-a.go
-models.go
-- main.go
Dans les modèles.aller j'ai les structures de la demande et des réponses pour un appel d'api,
un.aller a un vide struct, qui est privé et public de l'interface, que je tiens à exposer avec différentes méthodes
a_core.aller juste un peu de logique métier qui serait appelé dans mon interface de mise en œuvre
Ensuite, j'ai une main.aller où je viens d'appeler l'interface publique.
code dans un.aller
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) {
}
Dans la principale.allez, j'appelle l'interface de mon premier créer la MyData pointeur avec des valeurs
data := &a.MyData{
/////
}
result, err := a.MyFunc.Create(data)
J'obtiens l'erreur suivante quand je fais cela,
trop peu d'arguments dans l'appel à une.MyFunc.Créer
ne peut pas utiliser les données (variable de type *un.MyData) comme une.Mafonction valeur en argument à une.MyFunc.Créer: méthode manquante CreatecompilerInvalidIfaceAssign
Merci de ce que je fais mal?