thwd
thwd

Reputation: 24808

Optional arguments?

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

Answers (2)

Sonia
Sonia

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

nmichaels
nmichaels

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

Related Questions