编译错误:通过接口调用方法
我正在学习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,string)(forkat argcount)
在dataAccess.iproductdataaccess.getProducts中没有足够的论点 有 () want(dataAccess.iproductDataAccess)编译器(forgationArgcount)
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
}
I am learning go interfaces and trying to implement the below but vscode is showing me a compilation error, requesting help. What am I missing. Thank you.
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
}
Getting the following compilation errors in the editor when making the method calls on the IProductDataAccess from a component as shown below in a different package
not enough arguments in call to dataaccess.IProductDataAccess.GetProduct
have (string)
want (dataaccess.IProductDataAccess, string) (WrongArgCount)
not enough arguments in call to dataaccess.IProductDataAccess.GetProducts
have ()
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
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这条线看起来需要调整:
dataAccess.iproductDataAccess
是接口,而不是调用调用的实际对象。dataAccess.productDataAccess
是该页面上的单例实例,您要调用的内容。我认为您真的想要:
类似地呼吁使用:
This line looks like it needs adjustment:
dataaccess.IProductDataAccess
is an interface, not an actual object to invoke a call on.dataaccess.ProductDataAccess
is the singleton instance on that page that what you want to invoke.I think you really want:
Similarly for the GetProducts call: