Reputation: 24808
Is there a way to declare an argument as "optional" in the Go programming language?
Example of what I mean:
func doSomething(foo string, bar int) bool {
//...
}
I want the parameter bar
to be optional and default to 0
if nothing is passed through.
doSomething("foo")
would be the same as
doSomething("foo",0)
I'm unable to find anything about this matter in the official documentation about functions.
Upvotes: 5
Views: 944
Reputation: 28345
Another way to fake it is to pass a struct.
type dsArgs struct {
foo string
bar int
}
func doSomething(fb dsArgs) bool {
//...
}
Then
doSomething(dsArgs{foo: "foo"})
is the same as
doSomething(dsArgs{foo: "foo", bar: 0})
Upvotes: 1
Reputation: 50943
I don't believe Go does support optional arguments to functions, though you can fake it with variadic functions. The C approach, if you don't want to do that, is to pretend the language supports currying:
func doSomethingNormally(foo string) bool {
doSomething(foo, 0)
}
Upvotes: 3