Необязательные аргументы? - PullRequest
       1

Необязательные аргументы?

4 голосов
/ 30 декабря 2011

Есть ли способ объявить аргумент как "необязательный" в языке программирования Go?

Пример того, что я имею в виду:

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

Я хочу, чтобы параметр bar был необязательным, и по умолчанию он равен 0, если ничего не передано.

doSomething("foo")

будет таким же, как

doSomething("foo",0)

Я не могу найти что-либо по этому вопросу в официальной документации о функциях .

Ответы [ 2 ]

2 голосов
/ 30 декабря 2011

Я не верю, что Go поддерживает необязательные аргументы для функций, хотя вы можете подделать его с помощью variadic functions .Подход C, если вы не хотите этого делать, это притворяться, что язык поддерживает карри:

func doSomethingNormally(foo string) bool {
    doSomething(foo, 0)
}
0 голосов
/ 05 марта 2012

Другой способ подделать это передать структуру.

type dsArgs struct {
    foo string
    bar int
}

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

Тогда

doSomething(dsArgs{foo: "foo"})

будет таким же, как

doSomething(dsArgs{foo: "foo", bar: 0})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...