[英]What does the interface function/“cast” actually do in golang?
我對golang還是比較陌生,而我正在研究的項目已多次重復這種模式:
package foo
type Foo interface {
Bar() int
}
type foo struct {
}
func (f *foo) Bar() int {
return 42
}
func New() Foo {
// why?
return Foo(&foo{})
}
如果我將最后一個函數中的returns語句替換為return &foo{}
一切都會按預期進行...如果我正確理解,那就是鴨子輸入。 那么使用Foo(...)函數有什么意義呢? 當您將內置類型(例如int)包裝在可能具有方法的類型中時,將類型用作函數似乎可行。 我對作者的意圖感到好奇。 如果語言規范中涵蓋了它,我將找不到它。
表達式Foo(x)是一個conversion 。 這里不需要轉換,因為*foo
可分配給Foo
。 該代碼應寫為:
func New() Foo {
return &foo{}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.