可选参数?

时间:2011-12-30 18:54:48

标签: function go optional-arguments

有没有办法在Go编程语言中将参数声明为“可选”?

我的意思是:

func doSomething(foo string, bar int) bool {
    //...
}

我希望参数bar是可选的,如果没有通过则默认为0

doSomething("foo")

相同
doSomething("foo",0)

我无法在official documentation about functions中找到有关此事的任何内容。

2 个答案:

答案 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})