我在Go中的一个项目中有3个文件:
Cat.go
package entities
type Cat struct {
Length int
Origin string
Image_link string
Family_friendly int
Shedding int
General_health int
Playfulness int
Children_friendly int
Grooming int
Intelligence int
Other_pets_friendly int
Min_weight int
Max_weight int
Min_life_expectancy int
Max_life_expectancy int
Name string
}
cat.repository.go
package src
import entities "src/domain/entitites"
type CatRepository interface {
ListCats() []entities.Cat
}
cat.repository.impl.go
package repositories
import (
entities "src/domain/entitites"
nir "src/domain/repositories"
)
func (cat entities.Cat) ListCats() []entities.Cat {
}
我试图在第三个文件上实现接口,但编译器说“不能在非本地类型实体上定义新方法。Cat”
有人能告诉我怎么解决吗?
2条答案
按热度按时间s3fp2yjn1#
看起来你试图在另一个包中向结构体
Cat
添加方法。如果您的目的是重用Cat
结构作为同一实体的存储库,则应该在Cat.go
文件中添加方法。如果你想把仓库从cat结构中分离出来,你可能应该声明一个新的结构体
CatRepositoryImpl
,并向这个结构体添加一个方法。此外,您可以将该结构体放入cat.repository
文件夹中。utugiqy62#
对于你所问的,你可以创建一个单独的repo,然后像下面这样使用该repo实现方法,