Jestem bardzo początkujący w golang i próbuję zrozumieć, jak właściwie działa hermetyzacja w go.
Mam następująca struktura
-- package a
-a_core.go
-a.go
-models.go
-- main.go
W models.go mam struktury dla żądań i odpowiedzi na wywołanie api,
a.go ma pustą strukturę, która jest prywatny i publiczny interfejs, który chcę otwierać za pomocą różnych metod
a_core.go po prostu ma jakąś logikę biznesową, która byłaby spowodowana w mojej implementacji interfejsu
Następnie mam main.go, gdzie tylko wzywam interfejsu publicznego.
kod w a.go
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) {
}
W main.go nazywam interfejs swoim pierwszym stworzeniem wskaźnika MyData z wartościami
data := &a.MyData{
/////
}
result, err := a.MyFunc.Create(data)
Przy tym dostaję następujący błąd,
zbyt mało argumentów w wywołaniu.nazwie myfunc.Create
nie można używać dane (zmienną typu *a.MyData) jako wartości.nazwie myfunc w argumencie dla.nazwie myfunc.Create: brak metody CreatecompilerInvalidIfaceAssign
Proszę, co robię nie tak?