不能使用“实体”。NewCat(“Cat”)' (type *Cat) 作为类型 *entity。动物 [复制]

Cannot use 'entity.NewCat("Cat")' (type *Cat) as the type *entity.Animal [duplicate]

提问人:mjeesh 提问时间:11/18/2023 更新时间:11/18/2023 访问量:25

问:

我有动物接口和几个子类型。如何制作具有接口类型的切片并放入其中的子类型?

这是我试图做的

package main

import "awesomeProject/cmd/main/animal/entity"

func main() {

    animals := make([]*entity.Animal, 4)

    for i := range animals {
        animals[i] = entity.NewCat("Cat")
    }

}

接口的子类型

package entity

type Cat struct {
    name  string
}

func (c Cat) GetName() string {
    return c.name
}

func NewCat(name string) *Cat {
    return &Cat{
        name:  name,
    }
}

接口

package entity

type Animal interface {
    GetName() string
}

评论

2赞 JimB 11/18/2023
entity.Animal是一个接口,你不需要指向接口的指针。go.dev/doc/faq#pointer_to_interface

答: 暂无答案