亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

函數定義了未命名的參數,但調用者仍然傳遞值

函數定義了未命名的參數,但調用者仍然傳遞值

Go
開心每一天1111 2022-06-01 18:02:34
我試圖了解 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).


查看完整回答
反對 回復 2022-06-01
  • 1 回答
  • 0 關注
  • 94 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號