簡體   English   中英

接口功能/“ cast”在golang中實際上做什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM