Eu sou muito novo para golang e eu estou tentando ver como encapsulamento realmente funciona em ir.
Eu tenho a seguinte estrutura
-- package a
-a_core.go
-a.go
-models.go
-- main.go
Em modelos.vá eu ter estruturas para a solicitação e as respostas para uma chamada de api,
um.vá tem um vazio estrutura, que é privada e uma interface pública, o que eu quero expor com vários métodos
a_core.vá só tem alguma lógica de negócio que seria chamado na minha implementação de interface
Então, eu tenho um principal.ir onde eu apenas chamar a interface pública.
código em um.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) {
}
No principal.vá, eu chamo a interface do meu primeiro criar o MyData ponteiro com valores
data := &a.MyData{
/////
}
result, err := a.MyFunc.Create(data)
Eu recebo o seguinte erro quando eu faço isso,
muito poucos argumentos na chamada para um.MyFunc.Criar
não é possível usar dados (variável do tipo *um.MyData) como um.MyFunc valor de argumento para um.MyFunc.Criar: falta de método CreatecompilerInvalidIfaceAssign
Por favor, o que estou fazendo de errado?