4

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

我的意思的例子:

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

我希望参数bar是可选的,并且默认为0如果没有传递任何内容。

doSomething("foo")

将与

doSomething("foo",0)

我在有关 functions 的官方文档中找不到有关此问题的任何信息。

4

2 回答 2

2

我不相信 Go 确实支持函数的可选参数,尽管您可以使用variadic functions来伪造它。如果您不想这样做,C 方法是假装该语言支持柯里化:

func doSomethingNormally(foo string) bool {
    doSomething(foo, 0)
}
于 2011-12-30T19:01:11.393 回答
0

另一种伪造它的方法是传递一个结构。

type dsArgs struct {
    foo string
    bar int
}

func doSomething(fb dsArgs) bool {
    //...
}

然后

doSomething(dsArgs{foo: "foo"})

是相同的

doSomething(dsArgs{foo: "foo", bar: 0})
于 2012-03-05T04:33:14.940 回答