为什么我不能叫一个接口有一个集合的方法,从主要包

0

的问题

我是真正的新go语言和我想看看如何封装的真正工作中去。

我有以下结构

-- package a
    -a_core.go
    -a.go
    -models.go

-- main.go

模型。去 我有结构为请求和响应api呼叫,

a.去 具有一个空的结构,这是私人和公共接口,我想让与的各种方法

a_core.去 只是有一些商业逻辑,这将在我的口执行情况

然后,我有一个 主要的。去 哪里,我只是呼吁公众的接口。

代码中的一个。去

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) {

}

在主要的。走,我叫我的第一个接口创造MyData指针的价值观

data := &a.MyData{
 /////
}

result, err := a.MyFunc.Create(data)

我得到的以下错误,当我这么做

过几个论点在叫到一个.MyFunc.创建

不能使用数据(类型的变量*一个.MyData)。MyFunc价值的参数。MyFunc.创建:缺少方法CreatecompilerInvalidIfaceAssign

请我在做什么错的?

go interface struct visual-studio-code
2021-11-20 22:23:03
1

最好的答案

1

这里是一个例子
注意名的大写字母是公开的,在小写的私人(见 https://tour.golang.org/basics/3 )

./去实例。去

package main

import "go-example/animal"

func main() {
    var a animal.Animal
    a = animal.Lion{Age: 10}
    a.Breathe()
    a.Walk()
}

./走-如/动物/动物。去

package animal

import "fmt"

type Animal interface {
    Breathe()
    Walk()
}

type Lion struct {
    Age int
}

func (l Lion) Breathe() {
    fmt.Println("Lion breathes")
}

func (l Lion) Walk() {
    fmt.Println("Lion walk")
}
2021-11-20 23:23:09

我想引用该从不同的软件包。 因此,为什么我要做一个包。interfacename.名称和方法都已经实施的空白的结构myFunction
gbubemi smith

更新我的答案
Michael D.

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................