函数定义了未命名的参数,但调用者仍然传递值

我试图了解 Golang 中的 Wire 库,并发现其中wire.go有一个函数如下所示:


func NewSet(...interface{}) ProviderSet {

    return ProviderSet{}

}

...interface{})对于为什么参数未命名(意味着未在函数内部使用)但调用者仍将有意义的值传递给它,这对我来说看起来很陌生?


var Set = wire.NewSet(

    wire.Value(Foo(41)),

    provideFooBar)


开心每一天1111
浏览 122回答 1
1回答

翻过高山走不出你

参数被命名或未命名与调用者是否必须为它们传递值无关。未命名只是意味着它们不能在函数内部使用(不能被引用)。NewSet有一个可变参数,这意味着可以将任意数量的参数传递给它,这些参数可以分配给该类型,并且可以分配任何值interface{}(所有值都实现了空接口)。您看到的“空”实现NewSet()只是文档和编译器的占位符。生成的代码将使用传递的参数。如果你有一个功能:func dummy(int) {}你不能这样称呼它dummy(),这是一个编译时错误。您只能通过将int值传递给它来调用它,例如dummy(1).
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go