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

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