ufm: (Default)
[personal profile] ufm

package main

func a() (r struct{}) { println(«a»); return }

func b(struct{}) { println(«b»); return }

func main() {
defer b(a())
println(«Main»)
}

Выведет:
a
Main
b

Ну т.е. defer не вызывает в конце строчку как есть, а сначала подгатавливает все значения, а потом вызывает только функцию. Прикольно.

P.S. Кстати, ответ на вопрос «зачем ты им пользуешься, если он такая кака и тебе не нравится» очень простой — а кто сказал, что он мне не нравится? Язык, на самом деле — отличный. Он простой. Он удобный. Да, есть несколько вещей, которые мне в нём _очень_ ненравятся: отсутствие деструкторов, невозможность понять что канал закрыт перед отправкой в него данных и странное поведение при вызове функции с переменным числом параметров. Впрочем, вызов функции с переменным числом параметров — просто ненравится. А вот первые две вещи — да, _очень_ ненравятся. А больше у меня ни к языку ни к компилятору притензий нет.

Originally published at U.F.M's Homepage. You can comment here or there.

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting