编译错误:通过接口调用方法

我正在学习 go 接口并尝试实现以下内容,但 vscode 向我显示编译错误,请求帮助。我错过了什么。谢谢你。


package dataaccess


import (

  "../domain"

)


type IProductDataAccess interface {

    GetProducts() ([]*domain.Product, error)

    GetProduct(string) (*domain.Product, error)

}


var (

    ProductDataAccess IProductDataAccess

)


type productDAO struct{}


func init() {

    ProductDataAccess = new(productDAO)

}

func (p *productDAO) GetProduct(productID string) (*domain.Product, error) {

    return nil, nil

}

func (p *productDAO) GetProducts() ([]*domain.Product, error) {

    return nil, nil

}

从如下所示的不同包中的组件对 IProductDataAccess 进行方法调用时,在编辑器中出现以下编译错误


调用 dataaccess.IProductDataAccess.GetProduct 时没有足够的参数有(字符串)想要(dataaccess.IProductDataAccess,字符串)(WrongArgCount)


调用 dataaccess.IProductDataAccess.GetProducts 时没有足够的参数有 () want (dataaccess.IProductDataAccess)compiler (WrongArgCount)


package service


import (

    "../dataaccess"

    "../domain"

)


type IProductService interface {

    GetProducts() ([]*domain.Product, error)

    GetProduct(string) (*domain.Product, error)

}


var (

    ProductService IProductService

)


type productService struct{}


func init() {

    ProductService = new(productService)

}


func (p *productService) GetProduct(productID string) (*domain.Product, error) {

    product, err := dataaccess.IProductDataAccess.GetProduct(productID)

    if err != nil {

        return nil, err

    }

    return product, nil

}

func (p *productService) GetProducts() ([]*domain.Product, error) {

    products, err := dataaccess.IProductDataAccess.GetProducts()

    if err != nil {

        return nil, err

    }

    return products, nil

}


宝慕林4294392
浏览 131回答 1
1回答

繁花不似锦

这条线看起来需要调整:product, err := dataaccess.IProductDataAccess.GetProduct(productID)dataaccess.IProductDataAccess是一个接口,而不是调用调用的实际对象。 dataaccess.ProductDataAccess是您要调用的页面上的单例实例。我想你真的想要:product, err := dataaccess.ProductDataAccess.GetProduct(productID)同样对于 GetProducts 调用:products, err := dataaccess.ProductDataAccess.GetProducts()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go