将指向结构的指针添加到切片

我正在尝试将指向结构的指针添加到切片,但无法消除此错误:


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()

}


UYOU
浏览 171回答 2
2回答

呼唤远方

只需将您的代码更改为:func main() {  pets := make([]Animal, 2)  pets[0] = NewDog()  pets[0].Speak()}接口值已经是一个隐式指针。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go