我試圖了解 Golang 中的 Wire 庫,并發(fā)現(xiàn)其中wire.go有一個函數(shù)如下所示:func NewSet(...interface{}) ProviderSet { return ProviderSet{}}...interface{})對于為什么參數(shù)未命名(意味著未在函數(shù)內(nèi)部使用)但調(diào)用者仍將有意義的值傳遞給它,這對我來說看起來很陌生?var Set = wire.NewSet( wire.Value(Foo(41)), provideFooBar)
1 回答

翻過高山走不出你
TA貢獻(xiàn)1875條經(jīng)驗 獲得超3個贊
參數(shù)被命名或未命名與調(diào)用者是否必須為它們傳遞值無關(guān)。未命名只是意味著它們不能在函數(shù)內(nèi)部使用(不能被引用)。
NewSet
有一個可變參數(shù),這意味著可以將任意數(shù)量的參數(shù)傳遞給它,這些參數(shù)可以分配給該類型,并且可以分配任何值interface{}
(所有值都實現(xiàn)了空接口)。
您看到的“空”實現(xiàn)NewSet()
只是文檔和編譯器的占位符。生成的代碼將使用傳遞的參數(shù)。
如果你有一個功能:
func dummy(int) {}
你不能這樣稱呼它dummy()
,這是一個編譯時錯誤。您只能通過將int
值傳遞給它來調(diào)用它,例如dummy(1)
.
- 1 回答
- 0 關(guān)注
- 101 瀏覽
添加回答
舉報
0/150
提交
取消