go語言 抽象介面和介面實現之間的賦值

2021-10-19 17:23:45 字數 633 閱讀 8253

type toy inte***ce

type toyfactory inte***ce

type catfactory struct

type cat struct

func (this *cat)speak()

func (this *catfactory)create()toy

}type dog struct

func(this* dog)speak()

type dogfactory struct

func(this *dogfactory)create()toy

}func main()

d:=&dogfactory{}

p:=map[int]toyfactory{}

p[0]=c

p[1]=d

for _,v:=range p

var f toyfactory

f=cf.create().speak()

n:=new(toyfactory)

n=c //報錯

}

原因: 介面類本身是索引型別,而實現介面的類是具體型別,所以具體型別的指標才能賦值給抽象介面,抽象介面也不應該用new這種方式。

Go 語言介面

go 語言提供了另外一種資料型別即介面,它把所有的具有共性的方法定義在一起,任何其他型別只要實現了這些方法就是實現了這個介面。例項 定義介面 type inte ce name inte ce 定義結構體 type struct name struct 實現介面方法 func struct name...

Go語言 介面

介面代表一種呼叫契約,是多個方法宣告的集合。介面要實現的是做什麼,而不關心如何做。介面最常見的使用場景是對包外提供訪問,或預留擴充套件空間。go語言介面實現機制很簡潔,只要目標型別方法集內包含介面宣告的全部方法,就被視為實現了該介面,無需做顯示宣告,當然目標型別可實現多個介面。其實介面也是一中結構,...

Go語言 介面

在go語言中,乙個介面型別總是代表著某一種型別 即所有實現它的型別 的行為。乙個介面型別的宣告通常會包含關鍵字type 型別名稱 關鍵字inte ce以及由花括號包裹的若干方法宣告。示例如下 type animal inte ce注意,介面型別中的方法宣告是普通的方法宣告的簡化形式。它們只包括方法名...