Передача аргумента в Go IIFE (следуя примеру javascript)

Я привык программировать на javascript, где я могу сделать следующее, чтобы передать аргумент в немедленно вызываемое функциональное выражение:

(function(twoSeconds) {
    // do something with "twoSeconds" here
})(2 * 1000);

Поэтому я ожидал, что смогу сделать что-то подобное в Go, как показано ниже. Однако, похоже, это не работает.

func (twoSeconds) {
    // build error: "twoSeconds" undefined
}(time.Second * 2)

Поэтому я должен сделать это вместо этого:

func () {
    twoSeconds := time.Second * 2
}()

Поэтому мой вопрос: как я могу передать аргумент в Go IIFE? А если нельзя, то почему?


person user162097    schedule 17.10.2016    source источник


Ответы (1)


Аргументам функций в Go нужны типы. Итак, сделайте следующее:

func(twoSeconds time.Duration) {
    // use twoSeconds
}(time.Second * 2)
person abhink    schedule 17.10.2016
comment
О, конечно, теперь это очевидно, я не могу поверить, что пропустил это! В любом случае спасибо за помощь, проголосовал и принял. - person user162097; 17.10.2016