golang回声控制器模型

golang回声控制器模型,go,echo,Go,Echo,尝试出厂控制器时出现以下错误: package controllers import ( "net/http" "github.com/labstack/echo/v4" ) type personController struct{} var ( // services ) type PersonController interface { CreateNewPerson(ctx echo.Context) Ge

尝试出厂控制器时出现以下错误:

package controllers

import (
    "net/http"

    "github.com/labstack/echo/v4"
)

type personController struct{}

var (
// services
)

type PersonController interface {
    CreateNewPerson(ctx echo.Context)
    GetPerson(ctx echo.Context)
}

func NewPersonController() PersonController {
    return &personController{}
}

func (*personController) CreateNewPerson(ctx echo.Context) error {
    return ctx.JSON(http.StatusOK, "Hello")
}

func (*personController) GetPerson(ctx echo.Context) error {
    return ctx.JSON(http.StatusOK, "Hello")
}
无法使用&(personController literal)(类型的值 *personController)作为返回语句中的personController值:方法CreateNewPerson的类型错误(have func(ctx github.com/labstack/echo/v4.Context)错误,需要func(ctx github.com/labstack/echo/v4.Context)

控制器:

package controllers

import (
    "net/http"

    "github.com/labstack/echo/v4"
)

type personController struct{}

var (
// services
)

type PersonController interface {
    CreateNewPerson(ctx echo.Context)
    GetPerson(ctx echo.Context)
}

func NewPersonController() PersonController {
    return &personController{}
}

func (*personController) CreateNewPerson(ctx echo.Context) error {
    return ctx.JSON(http.StatusOK, "Hello")
}

func (*personController) GetPerson(ctx echo.Context) error {
    return ctx.JSON(http.StatusOK, "Hello")
}
在我的主要功能中,ai出现了以下错误:

func main() {
    e := echo.New()
    controller := controllers.NewPersonController()
    e.POST("/a", controller.CreateNewPerson)
}
无法使用controller.CreateNewPerson(func(ctx)类型的值 echo.Contex


接口和结构实现不匹配。如果希望接口方法与echo框架所需的匹配,请执行以下操作:

类型PersonController接口{
CreateNewPerson(ctx echo.Context)错误
GetPerson(ctx echo.Context)错误
}

谢谢你,你认为这种方法最好是实例化一个person控制器,以便能够调用或只使用一个没有接口的var吗?像这个personController.new()personController.get(),我可能只把它们作为纯函数(例如,不是结构上的方法)如果它们没有任何依赖项,因为它保持了简单性,那么它们会有像commandbus和validator这样的依赖项,但我对如何做到这一点有点困惑。如果是这样的话,我会有一个包含这些依赖项的结构,那么这些方法就可以“挂起”结构。本文讨论了组织数据库连接的不同模式,但相同的逻辑可以应用于其他资源。我只想做一些工作,看看什么最适合您的用例。多亏了alot broWhy,我有一个
personController
struct和
personController
接口?@HymnsForDisco我需要将我的中介作为依赖项传递,然后我想在控制器的结构中创建中介。这很糟糕。你能帮我吗?顺便说一句,返回接口是一种反模式:@TylerKropptt根据我在文章中的理解,返回结构并在参数中使用接口是否更好?我是新手,我是如果你能给我举个例子,我会很高兴的。是的,这是一个很好的一般规则(尽管可能有例外)。你也可以阅读我关于类似想法的回答