Заметка

Книги, по которым я прокачивал Go

Пару месяцев назад я столкнулся с необходимостью резко подтянуть свой уровень знаний по Golang. Причина была простой — у меня появилась команда, в которой есть стажёр, и я отвечаю за его рост.

Базовые навыки программирования на Go у меня были, но их явно не хватало для развития моего подопечного. Поэтому я решил улучшить свою экспертизу любимым способом — читая книги (и попутно ставя эксперименты).

«Golang для профи», Михалис Цукалос

Толстенный талмуд, который покрывает много далеко не базовых тем. Я решил начать с него, потому что издание выглядело внушительно.

Скажу честно, мне не очень понравилось. Книга слабо структурирована, некоторые советы сомнительны. Но при этом в ней много интересных особенностей Go и лайфхаков. Всё это подкреплено примерами кода, которые можно запустить и посмотреть в деле.

В целом книга хорошая, но я не рекомендую читать её от корки до корки. Лучше обратить внимание на избранные темы. Также не рекомендую использовать её в качестве первой книги по Go, потому что скорее запутаетесь, чем извлечёте что-то полезное.

«Go. Идиомы и паттерны проектирования», Джон Боднер

Книга Боднера мне понравилась гораздо больше. По сути, это углублённое руководство для новичков по Go. Автор рассматривает все базовые темы, но дополняет их особенностями и нюансами языка Go. Например, в главе про конкурентность Боднер объясняет, в каких случаях следует применять те или иные примитивы синхронизации.

Учтите, что в книге почти не рассматривается стандартная библиотека Go (stdlib), всё внимание автора сосредоточено на особенностях самого языка. Я не могу назвать это минусом — это просто особенность.

Если бы я сейчас начинал изучать Go с нуля, я бы порекомендовал пройти тур по Go и дополнить его книгой Боднера. Такая связка даст очень хорошую базу для изучения языка.

«100 ошибок Go и как их избежать», Тейва Харшани

Отличная книга, направленная на специалистов, уже знакомых с Go. В ней приводится 100 ошибок, которые можно допустить при программировании на Go, с множеством пояснений и примеров кода для их воспроизведения.

Для работы с материалом книги потребуются знания Go, поэтому она точно не должна быть первой книгой по языку. Более того, я не рекомендую её начинающим разработчикам — в книге довольно много нюансов и тонкостей. Однако при переходе с другого языка программирования (как в моём случае) книга очень полезна, так как показывает множество неочевидных особенностей поведения Go. Ошибки разбиты на несколько логических разделов, что делает чтение удобным — похожие ошибки идут друг за другом, и контексты не смешиваются.

Рекомендую к прочтению, если вы разработчик уровня middle и выше, или если вы переходите на Go с другого языка программирования.