История изменений
Исправление den73, (текущая версия) :
faq смотрел?
Да там сплошная и прямая ЛОЖЬ написана. Почему я и говорю о секте. Секта - это там, где ложь. Поэтому это не то, что просто соглашения. Это когда вас пытаются обмануть и навязать решение на основе ложной информации. Например, о том, что panic/recover не требует дополнительных конструкций - это ложь. Здесь нужен defer, который в точности есть finally по поведению, просто код, выполняемый при раскрутке стека, расположен в другом месте - не в конце, а в начале. Делает ли это поток управления менее или более convoluted, чем finally? Вообще-то более естественно расположение finally как в Java и C# - управление идёт сверху вниз. defer, расположенный в точке инициализации, более удобный для чтения (захват и освобождение ресурса находятся рядом), но он более convoluted. Кроме того, без лямбд этот механизм вообще бы не работал. Т.е., если по честному, то механизм освобождения ресурсов при выходе устроен в голанге сложнее, чем в C++ или Java.
Единственное, можно было бы обсудить то, что проблема рекурсивных ошибок в голанге может решаться проще, поскольку после recover паника прекращена. Но уровень большинства участников с их паникадилами и иконостасами, к сожалению, не оставляет возможности для более-менее квалифицированного обсуждения действительных особенностей голанга.
Исходная версия den73, :
faq смотрел?
Да там сплошная и прямая ЛОЖЬ написана. Почему я и говорю о секте. Секта - это там, где ложь. Поэтому это не то, что просто соглашения. Это когда вас пытаются обмануть и навязать решение на основе ложной информации. Например, о том, что panic/recover не требует дополнительных конструкций - это ложь. Здесь нужен defer, который в точности есть finally по поведению, просто код для finally расположен в другом месте - не в конце, а в начале. Делает ли это поток управления менее или более convoluted, чем finally? Вообще-то более естественно расположение finally как в Java и C# - управление идёт сверху вниз. defer, расположенный в точке инициализации, более удобный для чтения (захват и освобождение ресурса находятся рядом), но он более convoluted. Кроме того, без лямбд этот механизм вообще бы не работал. Т.е., если по честному, то механизм освобождения ресурсов при выходе устроен в голанге сложнее, чем в C++ или Java.