Вот недавно опять решил посмотреть, что там новенького в Go, и наткнулся на следующую статью: https://blog.golang.org/errors-are-values. В ней рассказывается, как в Go обрабатывать ошибки. Типа: «некоторые товарищи» утверждают, что приходится очень часто писать «if err != nil». Они неправы! Мы предлагаем этим товарищам парочку костылей, которые исправят их походку.
Ещё один момент. В Go FAQ (yourself :) написано: «We believe that coupling exceptions to a control structure, as in the try-catch-finally idiom, results in convoluted code.» Как-то мне кажется, что с «if err != nil» на каждом шагу код получается не менее convoluted.
Однако, что-же получается? В Go те же самые проблемы при обработке ошибок, что и в C? В Go, как и в C надо постоянно проверять статус ошибки. А если забыл, то тебя ждут те же самые приятные ощущения, что и в C. Где прогресс, спрашивается? Почему через 30 лет Роб Пайк и Кен Томпсон ничего лучше не придумали? Ведь есть же языки, где такой хернёй заниматься не надо.