как очистить список defer вызовов?

52 views
Skip to first unread message

Daniel Podolsky

unread,
Feb 21, 2015, 5:31:13 PM2/21/15
to gola...@googlegroups.com
я даже видел где-то соответсвующий синтаксис, но не запомнил, и
почему-то не могу нагуглить.

спасибо!

Владимир Петров

unread,
Feb 22, 2015, 6:07:36 AM2/22/15
to gola...@googlegroups.com
"Очистить" нелья, но можно использовать переменную-флаг и проверять её значение в каждой deferred функции. Важно только захватить её в closure, а не передавать параметром, иначе её значение будет зафиксировано. 

22 февраля 2015 г., 1:31 пользователь Daniel Podolsky <onok...@gmail.com> написал:
я даже видел где-то соответсвующий синтаксис, но не запомнил, и
почему-то не могу нагуглить.

спасибо!

--
Вы получили это сообщение, поскольку подписаны на группу Golang Russian.

Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес golang-ru+...@googlegroups.com.
Настройки подписки и доставки писем: https://groups.google.com/d/optout.

Mykhailo Tsiuptsiun

unread,
Feb 22, 2015, 6:08:55 AM2/22/15
to gola...@googlegroups.com

Используй замыкания

http://play.golang.org/p/176iorH_p7

http://golang.org/ref/spec#Defer_statements


вс, 22 февр. 2015, 0:31, Daniel Podolsky <onok...@gmail.com>:

я даже видел где-то соответсвующий синтаксис, но не запомнил, и
почему-то не могу нагуглить.

спасибо!

--
Вы получили это сообщение, поскольку подписаны на группу Golang Russian.

Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес golang-ru+unsubscribe@googlegroups.com.

Daniel Podolsky

unread,
Feb 22, 2015, 8:15:22 AM2/22/15
to gola...@googlegroups.com
> "Очистить" нелья, но можно использовать переменную-флаг
про переменную понятно, но меня мучит то, что я "точно помню", что
видел фразу "а вот такая конструкция отменяет все defer вызовы,
установленные ранее"...

запросто может оказаться ложной памятью, так уже бывало :(

Владимир Петров

unread,
Feb 22, 2015, 8:23:18 AM2/22/15
to gola...@googlegroups.com
Вот что точно может отменить все defer, так это os.Exit.

22 февраля 2015 г., 16:15 пользователь Daniel Podolsky <onok...@gmail.com> написал:

Daniel Podolsky

unread,
Feb 22, 2015, 8:25:33 AM2/22/15
to gola...@googlegroups.com
> Вот что точно может отменить все defer, так это os.Exit.
не-не-не. у меня там повторный unlock на мутексе случается.
Reply all
Reply to author
Forward
0 new messages