我试图了解 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 关注
- 121 浏览
添加回答
举报
0/150
提交
取消
