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.

(no subject)

Date: 2014-05-23 14:36 (UTC)
From: [identity profile] theiced.livejournal.com
1. адова мультипоточность (или горутиновость) + мутабельные данные = гарантированный пиздец.
2. ты про то что они таки есть? почему я их не видел?
3. да, конечно. у меня до этого такой же рвотный рефлекс был только на перл.

(no subject)

Date: 2014-05-23 14:45 (UTC)
From: [identity profile] ufm.livejournal.com
1. Ну так не делай глобальных мутабельных данных без мьютексов, делов-то? Или вообще не делай - никто-ж не заставляет. В ерланге ets - по сути теже самые мутабельные данные, что не мешает.
2. Нет, я про то, что их нет и слава богу.
3. Ну я вот тоже перл не люблю, что не мешает им пользоваться, когда приперает. А есть люди, которым он нравится до жути. Имеют право. Я и говорю - вкусовщина. :)