Я действительно новичок в golang и пытаюсь понять, как на самом деле работает инкапсуляция в go.
У меня есть следующая структура
-- package a
-a_core.go
-a.go
-models.go
-- main.go
В models.go у меня есть структуры для запросов и ответов на вызов api,
a.go имеет пустую структуру, которая является частной и общедоступным интерфейсом, который я хочу раскрыть с помощью различных методов
a_core.go просто имеет некоторую бизнес-логику, которая была бы вызвана в моей реализации интерфейса
Затем у меня есть main.go, где я просто вызываю общедоступный интерфейс.
код в 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) {
}
В main.go я называю интерфейс своим первым созданием указателя MyData со значениями
data := &a.MyData{
/////
}
result, err := a.MyFunc.Create(data)
При этом я получаю следующую ошибку,
слишком мало аргументов при вызове.myFunc.Create
невозможно использовать данные (переменную типа *a.MyData) в качестве значения.myFunc в аргументе для.myFunc.Create: отсутствует метод CreatecompilerInvalidIfaceAssign
Пожалуйста, что я делаю не так?