为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号