亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法將結構指針分配給接口指針

無法將結構指針分配給接口指針

Go
慕斯709654 2023-06-05 17:03:56
結構體Dog實現了接口的所有方法Animal,為什么*Dos不能賦值給*Animal?type Animal interface {    run()}type Dog struct {    name string}func (d *Dog) run() {    fmt.Println( d.name , " is running")}func main(){    var d *Dog    var a *Animal    d = new(Dog)    d.run()    a = d   //errors here}Go 通知以下錯誤:Cannot use 'd' (type *Dog) as type *Animal in assignment
查看完整描述

3 回答

?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

具有接口類型的變量已經是指針;您不需要將其聲明為指向接口的指針。只要做var a Animal,它就會起作用。



查看完整回答
反對 回復 2023-06-05
?
30秒到達戰場

TA貢獻1828條經驗 獲得超6個贊

您必須從界面中刪除指針。



//Animal interface

type Animal interface {

    run()

}


//Dog struct

type Dog struct {

    name string

}


func (d *Dog) run() {

    fmt.Println(d.name, "is running")

}


func main() {

    var d *Dog

    var a Animal


    d = new(Dog)

    d.name = "Putty"

    d.run()

    a = d //errors here

    a.run()

}


查看完整回答
反對 回復 2023-06-05
?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

Dog是一種類型,所以*Dog是。

Dog不實現接口Animal,但是*Dog實現了。

所以var a Animal = new(Dog)沒關系。


查看完整回答
反對 回復 2023-06-05
  • 3 回答
  • 0 關注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號