Найкращі книги по Go

Concurrency in Go: Tools and Techniques for Developers
Паралелізм може бути досить складним для правильного розуміння, однак "Concurrency in Go" – книга, що демонструє, як мова програмування з відкритим вихідним кодом Go спрощує роботу з паралелізмом і навіть робить його зрозумілим та легким. Тут розглянуті найкращі практики та патерни, які допоможуть вам інтегрувати паралелізм у свої системи.
Автор крок за кроком пояснює весь процес, щоб було зрозуміло, як Go моделює паралелізм, які проблеми випливають з цієї моделі та як можна складати примітиви всередині цієї моделі для вирішення проблем. Книга дозволить опанувати необхідні навички та інструменти, щоб впевнено писати та реалізовувати паралельні системи будь-якого розміру. Також висвітлюється як Go вирішує основні проблеми, що ускладнюють правильну реалізацію паралелізму, ознайомлює з основними відмінностями між паралелізмом та конкурентністю, демонструє синтаксис примітивів синхронізації пам'яті в Go. Ви зможете створити патерни з цих примітивів для написання підтримуваного паралельного коду, сформуєте ці патерни у вигляді набору практик, що дозволять вам писати великі розподілені системи, які масштабуються, а також дізнаєтесь про горутини та про те, як рантайм Go поєднує все це разом.
Про автора
Кетрін Кокс-Будей (Katherine Cox-Buday) – комп’ютерний спеціаліст, зараз працює в DigitalOcean.

Learning Go: An Idiomatic Approach to Real-World Go Programming 2nd Edition
Learning Go: An Idiomatic Approach to Real-World Go Programming - практичний посібник, що допоможе програмістам навчитись писати чіткий і ідіоматичний код мовою Go, а не відтворювати шаблони інших мов, які не мають сенсу в контексті Go. Ця книга навчить вас мислити як розробник Go, незалежно від вашого досвіду. Автор представляє патерни проектування Go і досліджує раціональність їх використання. Друге видання також розкриває тему джереників та їх специфічності у Go.
Прочитавши книгу, ви навчитесь писати код та створювати проєкти мовою Go, налаштовувати середовище розробки Go для себе або команди, коли і як використовувати reflection, unsafe та cgo, інструменти Go для поліпшення продуктивності, оптимізації використання пам'яті та зменшення збору сміття (GC), дізнаєтесь про ефективні можливості мови, та ті, які слід використовувати дуже обережно або уникати, а також навчитесь використовувати розширені інструменти розробки Go.
Про автора
Джон Боднер (Jon Bodner) був інженером-програмістом, провідним розробником і архітектором понад 20 років. У той час він працював над програмним забезпеченням у багатьох сферах, включаючи освіту, фінанси, комерцію, охорону здоров’я, право, уряд та інфраструктуру Інтернету. Зараз він є штатним інженером у Datadog. Джон часто виступає на конференціях Go, а його публікації в блозі про Go та розробку програмного забезпечення прочитали понад 150 000 людей. Він є творцем бібліотеки доступу до даних Proteus і співрозробником check-out, відгалуженням проекту LGTM.

Go Programming Language
Go Programming Language – авторитетне джерело для написання чіткого та ідіоматичного коду на мові Go, що підійде для будь-якого програміста. Незалежно від того, чи вам більше подобається JavaScript, Ruby, Python, Java чи C++, ця книга буде зрозумілою, оскільки не вимагає попереднього знання Go або досвіду роботи з будь-якою конкретною мовою.
У перших розділах розглядаються основні поняття Go, такі, як аргументи командного рядка, робота з GIF-зображеннями, URL-адресами, розробка веб-серверів тощо. Прості приклади охоплюють основні структурні елементи програм Go: синтаксис, потік керування, типи даних та організацію програми в пакети, файли та функції, не відволікаючись на складні алгоритми або структури даних. Пізніше докладніше пояснюється механізм пакетів і те, як створювати, тестувати та підтримувати проекти за допомогою інструменту go. Розділи про методи та інтерфейси знайомлять із нетрадиційним підходом Go до об’єктно-орієнтованого програмування, пояснюють ключові принципи інкапсуляції, композиції та замінності на реалістичних прикладах. Наступні розділи про паралелізм, охоплюють основні механізми goroutines і каналів, ілюструють стиль, відомий як передача послідовних процесів, якими відомий Go та традиційні аспекти паралельності зі спільними змінними. Також читач зможе ознайомитись з мистецтвом метапрограмування за допомогою рефлексії та як використовувати пакет unsafe, щоб вийти за межі системи типів у особливих ситуаціях, і як використовувати інструмент cgo для створення прив’язок для бібліотек C.
У книзі представлено сотні цікавих та практичних прикладів добре написаного коду, які допоможуть відразу почати програмувати на Go і поступово переходити до більш складних тем. Вихідний код вільно доступний для завантаження з gopl.io і його можна зручно отримати, створити та встановити за допомогою команди go get.
Про авторів
Алан А. А. Донован (Alan Donovan) є членом команди розробників мови Go у Google, у Нью-Йорку. Він отримав науковий ступінь у галузі інформатики в Кембриджі та в МТІ, і займається програмуванням з 1996 року. Починаючи з 2005 року, він працює в Google над проектами в галузі інфраструктури і був одним із розробників патентованої системи побудови Blaze. Ним створено безліч бібліотек та інструментів для статичного аналізу програм мовою Go, включаючи oracle, godoc -analysis, eg та gorename.
Браян У. Керніган (Brian Kernighan) – професор факультету інформатики в Прінстонському Університеті. З 1969 по 2000 рік він працював у дослідному центрі в Bell Labs, де займався мовами та інструментами для Unix. Він є співавтором низки книг, включаючи такі, як Мова програмування C, 2-е видання та Практика програмування.
Читайте нас в Telegram, щоб не пропустити огляд цікавих книг.