Мы в Quadcode любим Golang и можем рассказать о языке и его преимуществах много интересного. Все это неспроста - не так давно мы переписали некоторые наши продукты или отдельные их модули именно на Go, чему радуемся до сих пор. Подробности самых интересных кейсов вскоре планируем раскрыть на Хабре, а пока что поделимся подборкой любимых книг, которые посвящены этому языку. Некоторые из них подходят для начинающих разработчиков, другие - для программистов с опытом. Объединяет все представленные в подборке книги одно - они могут оказаться ну очень полезными для тех, кто так или иначе связан с Go. Подборка - под катом, и, кстати, если вы уже читали какую-то из рекомендованных нами книг, расскажите о своих впечатлениях в комментариях. Поехали!
Да, кстати, еще одна ремарка - некоторые книги переведены на русский, некоторые - нет. Если перевода (пока, как хотелось бы надеяться) нет, то мы об этом скажем.
![](https://habrastorage.org/getpro/habr/upload_files/61c/7ce/7f6/61c7ce7f616163391d480105136b87e8.png)
Эй, %username%, ты еще не знаком с Go? Тогда пора!
Сейчас - парочка книг для начинающих. То есть совсем начинающих - тех разработчиков, кто умеет программировать на других языках, но вот с Go еще не знаком.
Джей Макгаврен. Head First. Изучаем Go
![](https://habrastorage.org/getpro/habr/upload_files/287/2f1/3e3/2872f13e3aa254a611bc48ce08d95d69.jpg)
О чем книга: как и положено для технической литературы начального уровня, здесь обстоятельно и одновременно нескучно рассказывается о базовых понятиях, излагаются сведения, которые с вероятностью в 99,9% понадобятся разработчику, который только решился на изучение Go. Автор рассказывает о типах данных, функциях, переменных и массивах. Это в первой части книги, во второй уже чуть веселее - здесь разработчиков обучают более сложным нюансам работы с языком. В самом конце читателя знакомят с принципами работы с сетевыми коммуникациями, высоконагруженными системами и многопроцессорной обработкой.
Преимущества: написана она очень хорошо, автор излагает достаточно сложные темы при помощи простого языка. Конечно, технических терминов здесь полным-полно, книга все же о программировании, но текст все же осваивается быстро. Особых сложностей обычно ни у кого не возникает.
Возможно, потому, что автор вплетает в повествование практические кейсы, которые позволяют быстро понять, то, что в виде голой теории воспринималось бы гораздо более продолжительное время. Не забывает, правда, автор и о теории - ведь фундаментальные знания ничем не заменить.
Минусы: разработчики, которые уже ознакомились с книгой, утверждают, что перевод мог бы быть и немного получше. Ну то есть если вы хорошо владеете английским, лучше приобрести издание на английском языке.
Кроме того, есть мнение о том, что книга очень уж подробная, некоторые места можно было бы и сократить. Это уже вкусовщина, конечно - есть немало тех, кто остался очень доволен прочитанной книгой.
Максим Жашкевич. Язык Go для начинающих
![](https://habrastorage.org/getpro/habr/upload_files/84a/d73/218/84ad73218f882e00bbfcb5547b1b1c35.jpg)
О чем книга: В ней рассматривается обширный спектр тем, куда вошло обсуждение типов переменных, функций, массивов, интерфейсов, горутин и каналов. Книга не менее полезная, чем предыдущая, причем мы бы рекомендовали прочитать и первую, и вторую, просто для полноты понимания языка. Еще одна отличная книга для начинающих, которая написана русскоязычным автором.
Преимущества: хорошо читается, автор профессионально раскрывает тему. Как и в уже указанном выше издании, есть много примеров, кейсов, очень много тем. Прочитав книгу, разработчик совершенно точно получит представление о Go.
Минусы: некоторые читатели недовольны тем, что автор пропускает некоторые важные моменты. Встречается пара мест, где нам рассказывают, "как рисовать сову". Ну то есть вы помните, да? "Рисуем два кружочка, а потом дорисовываем сову". В целом, потому и говорим, что желательно прочитать и первую, и вторую книгу. Они дополнят друг друга и не позволят читателю пропустить что-то критически важное.
Introducing Go
![](https://habrastorage.org/getpro/habr/upload_files/03b/92c/026/03b92c026642a09d560b4cdebdf9abef.jpg)
О чем книга: ее можно даже назвать брошюрой, поскольку она небольшая - всего 62 страницы. Глядя на нее, возникает сомнение, что автор реально может чему-то научить. Но, к счастью, сомнения напрасны - пособие, а это именно оно, дает возможность быстро понять азы Go и начать ориентироваться в нюансах языка.
Плюсы: Знакомство с языком пошаговое, в конце каждой главы есть задания для усвоения материала. Главы короткие - но не потому, что там мало информации, а потому, что автор не добавлял "воды". Объяснения идут в едином русле, каждый последующий раздел связан с предыдущим.
Именно поэтому перескочить с раздела на раздел не получится - не изучив предыдущий материал, не сможете понять последующий.
Минусы: для этой книги нет русскоязычного перевода, так что если вы не очень хорошо знаете английский, это может быть проблемой. Кроме того, для ознакомления с книгой нужно уже быть знакомым с другими языками программирования. Без этого у вас вряд ли получится понять, что к чему. Хотя если есть большое желание попробовать - почему бы и нет.
Get Programming with Go
![](https://habrastorage.org/getpro/habr/upload_files/e2d/337/c58/e2d337c589354069eb3d2625c0fe1aad.jpg)
О чем книга: да все о том же, азы изучения языка Golang. Судя по отзывам тех, кто ее прочел, авторы разработали оригинальную структуру обучения, так что новичок, который прочитал все и выполнил указанные задачи, становится уже гораздо более знающим язык разработчиком.
Плюсы: она разбита на 32 урока. Как и в предыдущем случае, уроки связаны логически между собой, детально объясняются важные нюансы, практически ничего не остается "за бортом". Пособие разбито на 7 модулей, каждый из которых знакомит с языком. Последний блок дает возможность разобраться в таком относительно сложном вопросе, как параллельное программирование на Go. Естественно, обучают и синтаксису. Все задания можно выполнять в тестовой среде.
Минусы: книга издана только на английском, так что она подойдет только тем из нас, кто более-менее неплохо знает язык.
Теперь переходим уже к среднему уровню владения Go. Если вы уже более-менее освоились и можете программировать на Go, рекомендуем вот такие книги.
Мэтт Батчер, Мэтт Фарина. Go на практике
![](https://habrastorage.org/getpro/habr/upload_files/300/2b5/34d/3002b534da43d702e69283bfcb1d9099.jpg)
О чем книга: здесь уже нет азов, предполагается, что читатель с ними знаком. Кроме того, нужно знать и другие языки программирования, включая Java или C#. Опираясь на базовые знания Golang, которые уже есть у читателя, книга знакомит с кейсами использования ЯП в облаке. Кроме того, авторы раскрывают нюансы тестирования и отладки, плюс показывают, как можно создавать относительно несложные веб-сервисы и приложения.
Плюсы: она написана на вполне доступном языке, "воды" практически нет, авторы доступно и детально рассказывают о нюансах работы с Go. Более того, есть большое количество примеров кода, который нужен в обязательном порядке для знакомства с представленными кейсами.
Минусы: читатели, кто уже ознакомился с изданием, говорят, что все же в книге есть места, где хотелось бы больше технических подробностей. Кроме того, у русскоязычного перевода есть проблемы с адаптацией терминов, так что если есть возможность - лучше ознакомьтесь с оригиналом на английском языке.
Марк Саммерфильд. Программирование на языке Go
![](https://habrastorage.org/getpro/habr/upload_files/626/913/c67/626913c67327326964f82b274cf904a7.jpg)
О чем книга: это уже подача более сложного материала, чем даже в предыдущем случае. Автор рассказывает о разработке высоконагруженных приложений и сервисов. Плюс более-менее детально показывает нюансы паралелльного програмирования на Golang. Более того, он раскрывает и достоинства использования механизма динамической типизации.
Плюсы: уже после прочтения первых двух глав разработчик может создавать достаточно сложные комплексные сервисы и приложения. Отлично расписаны особенности синтаксиса, поданы несколько интересных кейсов, которые могут оказаться полезными в работе.
Минусы: их почти нет, единственное замечание - текст несколько сложен, но здесь удивляться не приходится, поскольку и тема непростая.
The Go Bestiary
![](https://habrastorage.org/getpro/habr/upload_files/411/24d/f03/41124df03cac9749c09b8c469203d4cb.jpg)
О чем книга: ее можно назвать сборником советов и рекомендаций для разработчика, которые скомпилированы и собраны воедино.
Плюсы: авторы рассказывают о практике структурирования проектов, что необходимо разработчику любого класса. Кроме того, в книге показаны наиболее распространенные и нежелательные для разработчика ошибки. Издание подходит тем разработчикам, кто уже неплохо знаком с Go и способен работать над сложными проектами.
Минусы: их почти нет. Правда, отсутствует перевод на русский, но для более-менее опытного разработчика это точно не проблема.
Ну и, наконец, продвинутый уровень - книги, которые указаны ниже, подойдут лишь для опытных разработчиков, которые знают не только другие языки, но и хорошо разбираются в Go - вероятно, выше среднего уровня.
Михалис Цукалос. Golang для профи
![](https://habrastorage.org/getpro/habr/upload_files/10e/e5b/0d8/10ee5b0d89f03db97fbca30838baf986.jpg)
О чем книга: она раскрывает такие важные аспекты языка Golang, как типы данных, работа с пакетами, конкурентность, сетевое программирование и многое другое. Книга не просто так получила уже второе издание - в ней рассматривается весьма обширный спектр тем.
Плюсы: автор показывает немало эффективных кейсов, охватывает широкий спектр важных для профессионального разработчика тем. Плюс рассказывает о нюансах работы в таких направлениях, как машинное обучение, нейросети, принципы совместимости Go c Git, JSON и т.д.
Минусы: их практически нет.
Nathan Cozyra. Mastering Concurrency in Go
![](https://habrastorage.org/getpro/habr/upload_files/c76/060/d51/c76060d51498f962f55c6f9cae42737d.jpg)
О чем книга: здесь раскрываются главные принципы паралеллизма и показываются кейсы реализации разных проектов. Автор рассказывает об истории параллелизма, демонстрирует различия Golang с другими языками в этом аспекте. Основная задача издания - помочь разработчику создавать одновременно высокопроизводительные и безопасные приложения.
Достоинства: яркие примеры, относительно легкая подача материала, насколько это применимо к настолько высокотехнологическому тексту. Более того, автор показывает нюансы различных кейсов, которые совершенно точно пригодятся разработчику в будущем.
Минусы: их нет, но книга посвящена лишь параллелизму, так что если вам нужна информация именно по этой теме, книга подходит идеально. Чему-то другому она вряд ли научит.
Ну а на сегодня все - если у вас есть книги по Golang, которые вы можете рекомендовать всем нам, велкам в комментарии. Кроме того, интересно будет узнать мнение читателей, которые уже успели ознакомиться с одной или несколькими книг из подборки.