有没有办法在Go编程语言中将参数声明为“可选”?
我的意思是:
func doSomething(foo string, bar int) bool {
//...
}
我希望参数bar
是可选的,如果没有通过则默认为0
。
doSomething("foo")
与
相同doSomething("foo",0)
我无法在official documentation about functions中找到有关此事的任何内容。
答案 0 :(得分:2)
我不相信Go会支持函数的可选参数,尽管你可以用variadic functions伪造它。如果您不想这样做,C方法就是假装语言支持currying:
func doSomethingNormally(foo string) bool {
doSomething(foo, 0)
}
答案 1 :(得分:0)
伪造它的另一种方法是传递结构。
type dsArgs struct {
foo string
bar int
}
func doSomething(fb dsArgs) bool {
//...
}
然后
doSomething(dsArgs{foo: "foo"})
与
相同doSomething(dsArgs{foo: "foo", bar: 0})