登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-02-28 21:21:26 432浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《调用者传递了值,但函数定义未命名参数》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

我试图理解 golang 中的 wire 库,发现在 wire.go 中有一个如下所示的函数:

func newset(...interface{}) providerset {
    return providerset{}
}

对于我来说,为什么 ...interface{}) 参数是未命名的(意味着不在函数内部使用),但调用者仍然向它传递有意义的值?

var Set = wire.NewSet(
    wire.Value(Foo(41)),
    provideFooBar)

解决方案


参数命名或未命名与调用者是否必须为其传递值无关。未命名仅意味着它们不能在函数内部使用(不能引用)。

newset 有一个可变参数,这意味着可以向其传递任意数量的可分配给类型的参数,并且可以将任何值分配给 interface{}(所有值都实现空接口)。 p>

您看到的 newset() 的“空”实现只是文档和编译器的占位符。生成的代码将使用传递的参数。

如果你有一个函数:

func dummy(int) {}

你不能像 dummy() 那样调用它,这是一个编译时错误。您只能通过向其传递 int 值来调用它,例如dummy(1)

查看相关:Is unnamed arguments a thing in Go?

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>