有没有办法在 Go 编程语言中将参数声明为“可选”?
我的意思的例子:
func doSomething(foo string, bar int) bool {
//...
}
我希望参数bar
是可选的,并且默认为0
如果没有传递任何内容。
doSomething("foo")
将与
doSomething("foo",0)
我在有关 functions 的官方文档中找不到有关此问题的任何信息。
有没有办法在 Go 编程语言中将参数声明为“可选”?
我的意思的例子:
func doSomething(foo string, bar int) bool {
//...
}
我希望参数bar
是可选的,并且默认为0
如果没有传递任何内容。
doSomething("foo")
将与
doSomething("foo",0)
我在有关 functions 的官方文档中找不到有关此问题的任何信息。
我不相信 Go 确实支持函数的可选参数,尽管您可以使用variadic functions来伪造它。如果您不想这样做,C 方法是假装该语言支持柯里化:
func doSomethingNormally(foo string) bool {
doSomething(foo, 0)
}
另一种伪造它的方法是传递一个结构。
type dsArgs struct {
foo string
bar int
}
func doSomething(fb dsArgs) bool {
//...
}
然后
doSomething(dsArgs{foo: "foo"})
是相同的
doSomething(dsArgs{foo: "foo", bar: 0})