Я пытаюсь добавить указатель на структуру на срезе, но я не могу избавиться от этой ошибки:Добавление указатель на структуру срезу
cannot use NewDog() (type *Dog) as type *Animal in append:
*Animal is pointer to interface, not interface
Как я могу избежать этого ошибка? (В то же время с помощью указателей)
package main
import "fmt"
type Animal interface {
Speak()
}
type Dog struct {
}
func (d *Dog) Speak() {
fmt.Println("Ruff!")
}
func NewDog() *Dog {
return &Dog{}
}
func main() {
pets := make([]*Animal, 2)
pets[0] = NewDog()
(*pets[0]).Speak()
}
Я хотел уточнить; значение интерфейса ** не ** неявный указатель. Тип '* Dog' (указатель на Dog) реализует интерфейс, а не тип' Dog' - вот почему. – thwd