Soy realmente nuevo en golang y estoy tratando de ver cómo la encapsulación realmente funciona en ir.
Tengo la siguiente estructura
-- package a
-a_core.go
-a.go
-models.go
-- main.go
En los modelos.vaya he estructuras para la solicitud y las respuestas para una llamada a la api,
una.ir ha un vacío de la estructura, que es privada y una interfaz pública, lo que quiero exponer con varios métodos
a_core.ir solo tiene algo de lógica de negocios que sería llamado en mi interfaz de la aplicación
Entonces, tengo una principal.ir de donde acabo de llamar a la interfaz pública.
código en un.ir
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) {
}
En principal.vaya, yo llame a la interfaz de mi primera crear el MyData puntero con valores
data := &a.MyData{
/////
}
result, err := a.MyFunc.Create(data)
Me sale el siguiente error cuando hago esto,
muy pocos argumentos en la llamada a una.Mifunc.Crear
no puede utilizar los datos (variable de tipo *a.MyData) como un.MyFunc valor de argumento a una.Mifunc.Crear: falta de método CreatecompilerInvalidIfaceAssign
Por favor, ¿qué estoy haciendo mal?