Язык программирования go донован pdf
📕 ТОП-10 книг по языку программирования Go: от новичка до профессионала
Книги по языку Go для начального уровня
Джей Макгаврен. Head First. Изучаем Go
В книге Джея Макгаврена подробно и последовательно изложены базовые сведения, необходимые для освоения нового языка. Читатели познакомятся с типами данных, функциями, переменными и массивами, а также освоят более сложные аспекты программирования на Go, вплоть до работы с сетевыми коммуникациями и многопроцессорной обработкой.
Отмеченные читателями достоинства :
Максим Жашкевич. Язык Go для начинающих
На протяжении 12 глав автор знакомит читателя с миром языка программирования Go, затрагивая широкий круг тем: типы переменных, функции, массивы, интерфейсы, ООП, горутины и каналы. Также даны наставления для самообразования.
Caleb Doxsey. Introducing Go: Build Reliable, Scalable Programs
Ещё одна работа уважаемого в среде программистов издательства O’REILLY, на этот раз о языке Go.
Книги для среднего уровня
Мэтт Батчер, Мэтт Фарина. Go на практике
Книга предназначена для людей, уже освоивших программирование, например, на Java или C#. Это практическое руководство опирается на основополагающие концепции Go и знакомит читателя с примерами его использования в облаке. Изучается тестирование и отладка, а также создание веб-сервисов и других приложений.
Марк Саммерфильд. Программирование на языке Go
Универсальное пособие для изучения языка Go затрагивает сложные темы, включая написание высокопроизводительных программ. Автор разъясняет все аспекты параллельного программирования на Go, а также показывает гибкость и необычность подхода к ООП с применением механизма динамической типизации.
Алан Донован, Брайан Керниган. Язык программирования Go
Книга позволит читателям поближе познакомиться с языком Go, узнать о его преимуществах и недостатках, а также научиться создавать программы, решающие реальные практические задачи.
William Kennedy, Brian Ketelsen, Erik St. Martin. Go in Action
С помощью этой книги можно пройти путь от владеющего только азами Go новичка до матёрого программиста, cпособного создавать сложные многопоточные приложения.
Vladimir Vivien. Learning to Go
Пошаговое руководство поможет читателю быстро начать работу с Go от самых основ до идиом параллелизма и сетевого программирования.
Для продвинутого уровня
Михалис Цукалос. Golang для профи
Книга позволит вам быстро изучить многие аспекты Go: типы данных языка, работу с пакетами, конкурентность, сетевое программирование и т. д.
Nathan Cozyra. Mastering Concurrency in Go
Автор концентрируется на использовании параллелизма в Go: на его истории и отличиях от реализации в других языках, а также на особенностях структуры ядра параллелизма.
С помощью книги можно научиться создавать безопасные и высокопроизводительные приложения.
Язык программирования go донован pdf
Black Hat Go: Go Programming For Hackers and Pentesters [2020] Tom Steele, Chris Patten, and Dan Kottmann
Black Hat Go explores the darker side of Go, the popular programming language revered by hackers for its simplicity, efficiency, and reliability. It provides an arsenal of practical tactics from the perspective of security practitioners and hackers to help you test your systems, build and automate tools to fit your needs, and improve your offensive security skillset, all using the power of Go.
Programming languages have always had an impact on information security. The design constraints, standard libraries, and protocol implementations available within each language end up defining the attack surface of any application built on them. Security tooling is no different; the right language can simplify complex tasks and make the incredibly difficult ones trivial. Go’s cross-platform support, single-binary output, concurrency features, and massive ecosystem make it an amazing choice for security tool development. Go is rewriting the rules for both secure application development and the creation of security tools, enabling faster, safer, and more portable tooling.
Black Hat Go provides everything necessary to get started with Go development in the security space without getting bogged down into the lesser-used language features. Want to write a ridiculous fast network scanner, evil HTTP proxy, or cross-platform command-and-control framework? This book is for you. If you are a seasoned programmer looking for insight into security tool development, this book will introduce the concepts and trade-offs that hackers of all stripes consider when writing tools. Veteran Go developers who are interested in security may learn a lot from the approaches taken here, as building tools to attack other software requires a different mindset than typical application development. Your design trade-offs will likely be substantially different when your goals include bypassing security controls and evading detection.
Head First. Изучаем Go [2020] Макгаврен Джей
Go упрощает построение простых, надежных и эффективных программ. А эта книга сделает его доступным для обычных программистов. Основная задача Go — эффективная работа с сетевыми коммуникациями и многопроцессорной обработкой, но код на этом языке пишется и читается не сложнее чем на Python и JavaScript. Простые примеры позволят познакомиться с языком в действии и сразу приступить к программированию на Go. Так что вы быстро освоите общепринятые правила и приемы, которые позволят вам называть себя гофером.
Golang для профи: работа с сетью, многопоточность, структуры данных и машинное обучение с Go [2020] Цукалос
Вам уже знакомы основы языка Go? В таком случае эта книга для вас. Михалис Цукалос продемонстрирует возможности языка, даст понятные и простые объяснения, приведет примеры и предложит эффективные паттерны программирования. Изучая нюансы Go, вы освоите типы и структуры данных языка, а также работу с пакетами, конкурентность, сетевое программирование, устройство компиляторов, оптимизацию и многое другое. Закрепить новые знания помогут материалы и упражнения в конце каждой главы. Уникальным материалом станет глава о машинном обучении на языке Go, в которой вы пройдёте от основополагающих статистических приемов до регрессии и кластеризации. Вы изучите классификацию, нейронные сети и приёмы выявления аномалий. Из прикладных разделов вы узнаете: как использовать Go с Docker и Kubernetes, Git, WebAssembly, JSON и др.
Hands-On Software Engineering with Golang [2020] Anagnostopoulos Achilleas
Explore software engineering methodologies, techniques, and best practices in Go programming to build easy-to-maintain software that can effortlessly scale on demand. Over the last few years, Go has become one of the favorite languages for building scalable and distributed systems. Its opinionated design and built-in concurrency features make it easy for engineers to author code that efficiently utilizes all available CPU cores.
This Golang book distills industry best practices for writing lean Go code that is easy to test and maintain, and helps you to explore its practical implementation by creating a multi-tier application called Links ‘R’ Us from scratch. You’ll be guided through all the steps involved in designing, implementing, testing, deploying, and scaling an application. Starting with a monolithic architecture, you’ll iteratively transform the project into a service-oriented architecture (SOA) that supports the efficient out-of-core processing of large link graphs. You’ll learn about various cutting-edge and advanced software engineering techniques such as building extensible data processing pipelines, designing APIs using gRPC, and running distributed graph processing algorithms at scale. Finally, you’ll learn how to compile and package your Go services using Docker and automate their deployment to a Kubernetes cluster.
By the end of this book, you’ll know how to think like a professional software developer or engineer and write lean and efficient Go code.
What you will learn:
Understand different stages of the software development life cycle and the role of a software engineer
Create APIs using gRPC and leverage the middleware offered by the gRPC ecosystem
Discover various approaches to managing package dependencies for your projects
Build an end-to-end project from scratch and explore different strategies for scaling it
Develop a graph processing system and extend it to run in a distributed manner
Deploy Go services on Kubernetes and monitor their health using Prometheus
Практическая программная инженерия с Golang [2020] Анагностопулос Ахиллеас
Изучите методологии, техники и передовые методы разработки программного обеспечения в программировании на Go, чтобы создавать удобное в обслуживании программное обеспечение, которое можно легко масштабировать по запросу. За последние несколько лет Go стал одним из любимых языков для создания масштабируемых и распределенных систем. Его продуманный дизайн и встроенные функции параллелизма позволяют инженерам легко создавать код, который эффективно использует все доступные ядра ЦП.
В этой книге о Голанге собраны лучшие отраслевые практики для написания бережливого кода Go, который легко тестировать и поддерживать, и помогает изучить его практическую реализацию, создав с нуля многоуровневое приложение под названием Links ‘R’ Us. Вы пройдете все этапы разработки, внедрения, тестирования, развертывания и масштабирования приложения. Начиная с монолитной архитектуры, вы итеративно преобразуете проект в сервис-ориентированную архитектуру (SOA), которая поддерживает эффективную внешнюю обработку больших графов ссылок. Вы узнаете о различных передовых и передовых методах разработки программного обеспечения, таких как создание расширяемых конвейеров обработки данных, разработка API-интерфейсов с использованием gRPC и запуск алгоритмов обработки распределенных графов в любом масштабе. Наконец, вы узнаете, как скомпилировать и упаковать свои сервисы Go с помощью Docker и автоматизировать их развертывание в кластере Kubernetes.
К концу этой книги вы научитесь думать, как профессиональный разработчик или инженер программного обеспечения, и писать компактный и эффективный код Go.
Что вы узнаете:
Понимать различные этапы жизненного цикла разработки программного обеспечения и роль программиста.
Создавайте API с помощью gRPC и используйте промежуточное программное обеспечение, предлагаемое экосисте
Язык Go
Руководство по программированию на GO.
Донован, Алан А. А., Керниган, Брайан, У.»Язык программирования Go» Вильямс, 2016 год, 432 стр. (19,8 мб. djvu + 18,3 мб. pdf + 0,2 мб. code)
От языка С Go унаследовал синтаксис выражений, конструкции управления потоком, базовые типы данных, передачу параметров в функции по значению, понятие указателей и, что важнее всего, направленность С на получение при компиляции эффективного машинного кода и полное взаимодействие с абстракциями современных операционных систем. Язык Go имеет открытый исходный код, а исходные тексты его библиотек и инструментов, включая компилятор, находятся в открытом доступе. Свой вклад в язык, его библиотеки и инструментарий вносят многие программисты всего мира.
Go работает на большом количестве Unix-подобных систем, таких как Linux, FreeBSD, OpenBSD, Mac OS X, а также на Plan 9 и Microsoft Windows; при этом программы, написанные для одной из этих сред, легко переносимы на другие. Эта книга поможет вам начать работу с Go, и эффективно использовать все его преимущества и особенности, а также богатые стандартные библиотеки для создания понятных, самодостаточных и эффективных программ.
ISBN 978-5-8459-2051-5 (рус.)
Предисловие 11
Происхождение Go 12
Проект Go 13
Структура книги 15
Дополнительная информация 17
Благодарности 18
Ждем ваших отзывов! 19
Глава 1. Учебник 21
1.1. Hello, World 21
1.2. Аргументы командной строки 24
1.3. Поиск повторяющихся строк 29
1.4. Анимированные GIF-изображения 34
1.5. Выборка URL 37
1.6. Параллельная выборка URL 39
1.7. Веб-сервер 41
1.8. Некоторые мелочи 46
Глава 2. Структура программы 49
2.1. Имена 49
2.2. Объявления 50
2.3. Переменные 52
2.3.1. Краткое объявление переменной 53
2.3.2. Указатели 54
2.3.3. Функция new 57
2.3.4. Время жизни переменных 58
2.4. Присваивания 59
2.4.1. Присваивание кортежу 60
2.4.2. Присваиваемость 61
2.5. Объявления типов 62
2.6. Пакеты и файлы 64
2.6.1. Импорт 66
2.6.2. Инициализация пакетов 68
2.7. Область видимости 70
Глава 3. Фундаментальные типы данных 75
3.1. Целые числа 75
3.2. Числа с плавающей точкой 81
3.3. Комплексные числа 86
3.4. Булевы значения 88
3.5. Строки 90
3.5.1. Строковые литералы 91
3.5.2. Unicode 92
3.5.3. UTF-8 93
3.5.4. Строки и байтовые срезы 97
3.5.5. Преобразования между строками и числами 101
3.6. Константы 102
3.6.1. Генератор констант iota 103
3.6.2. Нетипизированные константы 105
Глава 4. Составные типы 109
4.1. Массивы 109
4.2. Срезы 112
4.2.1. Функция append 117
4.2.2. Работа со срезами «на месте” 120
4.3. Отображения 123
4.4. Структуры 130
4.4.1. Структурные литералы 133
4.4.2. Сравнение структур 134
4.4.3. Встраивание структур и анонимные поля 135
4.5 JSON 138
4.6. Текстовые и HTML-шаблоны 144
Глава 5. Функции 151
5.1. Объявления функций 151
5.2. Рекурсия 153
5.3. Множественные возвращаемые значения 157
5.4. Ошибки 160
5.4.1. Стратегии обработки ошибок 161
5.4.2. Конец файла (EOF) 164
5.5. Значения-функции 165
5.6. Анонимные функции 168
5.6.1. Предупреждение о захвате переменных итераций 174
5.7. Вариативные функции 176
5.8. Отложенные вызовы функций 178
5.9. Аварийная ситуация 183
5.10. Восстановление 186
Глава 6. Методы 191
6.1. Объявления методов 191
6.2. Методы с указателем в роли получателя 194
6.2.1. Значение nil является корректным получателем 196
6.3. Создание типов путем встраивания структур 197
6.4. Значения-методы и выражения-методы 200
6.5. Пример: тип битового вектора 202
6.6. Инкапсуляция 205
Глава 7. Интерфейсы 209
7.1. Интерфейсы как контракты 209
7.2. Типы интерфейсов 212
7.3. Соответствие интерфейсу 213
7.4. Анализ флагов с помощью flag.Value 217
7.5. Значения интерфейсов 220
7.5.1. Осторожно: интерфейс, содержащий нулевой указатель, не является нулевым 224
7.6. Сортировка с помощью sort.Interface 225
7.7. Интерфейс http.Handler 231
7.8. Интерфейс error 236
7.9. Пример: вычислитель выражения 238
7.10. Декларации типов 246
7.11. Распознавание ошибок с помощью деклараций типов 248
7.12. Запрос поведения с помощью деклараций типов 250
7.13. Выбор типа 252
7.14. Пример: XML-декодирование на основе лексем 255
7.15. Несколько советов 258
Глава 8. Go-подпрограммы и каналы 259
8.1. Go-подпрограммы 259
8.2. Пример: параллельный сервер часов 261
8.3. Пример: параллельный эхо-сервер 265
8.4. Каналы 267
8.4.1. Небуферизованные каналы 269
8.4.2. Конвейеры 270
8.4.3. Однонаправленные каналы 273
8.4.4. Буферизованные каналы 275
8.5. Параллельные циклы 278
8.6. Пример: параллельный веб-сканер 283
8.7. Мультиплексирование с помощью select 288
8.8. Пример: параллельный обход каталога 292
8.9. Отмена 296
8.10. Пример: чат-сервер 299
Глава 9. Параллельность и совместно используемые переменные 303
9.1. Состояния гонки 303
9.2. Взаимные исключения: sync.Mutex 309
9.3. Мьютексы чтения/записи: sync.RWMutex 313
9.4. Синхронизация памяти 314
9.5. Отложенная инициализация: sync.Once 316
9.6. Детектор гонки 319
9.7. Пример: параллельный неблокирующий кеш 319
9.8. Go-подпрограммы и потоки 328
9.8.1. Растущие стеки 328
9.8.2. Планирование go-подпрограмм 329
9.8.3. GOMAXPROCS 329
9.8.4. G o-подпрограммы не имеют идентификации 330
Глава 10. Пакеты и инструменты Go 333
10.1. Введение 333
10.2. Пути импорта 334
10.3. Объявление пакета 335
10.4. Объявления импорта 336
10.5. Пустой импорт 337
10.6. Пакеты и именование 339
10.7. Инструментарий Go 341
10.7.1. Организация рабочего пространства 342
10.7.2. Загрузка пакетов 343
10.7.3. Построение пакетов 344
10.7.4. Документирование пакетов 347
10.7.5. Внутренние пакеты 349
10.7.6. Запрашиваемые пакеты 350
Глава 11. Тестирование 353
11.1. Инструмент go test 354
11.2. Тестовые функции 354
11.2.1. Рандомизированное тестирование 359
11.2.2. Тестирование команд 361
11.2.3. Тестирование белого ящика 363
11.2.4. Внешние тестовые пакеты 367
11.2.5. Написание эффективных тестов 369
11.2.6. Избегайте хрупких тестов 371
11.3. Охват 372
11.4. Функции производительности 375
11.5. Профилирование 378
11.6. Функции-примеры 381
12 книг для изучения языка программирования Go
Golang или Go — относительно новый язык, который ориентирован на многопоточность. Его в 2009 году запустил концерн Google. На Западе он уже обрёл свою популярность и занял нишу среди других языков, но до нас толком не дошёл, — пишет KV.BY. Лишь сейчас начинаются попытки освоения этого языка. Это видно даже по скудности выбора литературы для изучения. Из-за этого большая часть представленных учебников будет только на английском языке.
Программирование на языке Go
Перед языком Golang ставилась цель максимально использовать заложенную мощность в многоядерные процессоры. Марк Саммерфильд продемонстрирует вам возможности языка, идиомы и способы написания программ. В книге собрана вся информация, нужная для создания функциональных и работающих приложений. Автор показывает преимущества Go перед другими языками, указывая на ключевые особенности. Марк в этой книге продемонстрирует вам тонкости параллельного программирования, применение динамической типизации и прочие плюшки.
Книга подойдёт и новичкам и тем, кто уже имеет некоторое представление о Go.
Go на практике
Расчёт идёт на опытных программистов, использующих этот язык. Книга — свод рецептов по решению типовых вопросов, возникающих при создании приложения или программы. Пособие построено по принципу «вопрос-решение-обсуждение». Книга показывает концепцию языка Go, демонстрирует приемы, тестирование и отладка, маршрутизацию и прочие возможности. Также затронут вопрос о создании облачных приложений.
Язык программирования Go
Книга универсальная и подойдёт как новичкам, так и уже имеющим какие-то знания по языку. Хотя, проще в ней будет ориентироваться более опытным программистам. Книга поможет также освоить язык, если вы до этого работали с другими. Здесь описаны его плюсы, зачем вообще создавался Go, узнаете, как писать эффективно и идиоматично.
Авторы — профессионалы в двух областях: программировании и написании учебного материала. Тут приведены примеры решения практических вопросов, приемы, облегчающие написание кода и т.д.
Go in action
Пособие рассчитано на тех, кто владеет основами языка Go. Go in action проведет вас от начинающего программиста к маэстро, виртуозно управляющим кодом Golang. Авторы с первых страниц погружают вас в особенности и концепции языка, а затем постепенно подводят к получению опыта практическим путем.
Задания, предлагаемые книгой, – это веб-ресурсы, серверы и приложения. В процессе программирования вам поведают о методах манипулирования, преобразования данных и прочих фишках.
Introducing Go
Миниатюрная книжка в 62 страницы. Казалось бы, что можно понять из такого маленького объема? Но, если у вас есть опыт работы с другими языками, то это пособие быстро проведет вас по азам Go и поможет вам определиться, нужен ли вам он или лучше поискать что-то иное. А вторым доводом в пользу книги идет тот факт, что она от O’Really.
Книга пошагово знакомит с языком, в конце каждой главы есть задания для усвоения материала. Главы короткие, лаконичные, но понятные и простые. Все идет по принципу цепочки. Так что перескочить с одного на другое не получится, да и малый объем не позволит это сделать.
Get Programming with Go
Книга для новичков. Она поможет освоить азы языка Go за 32 урока. Пособие разбито на 7 модулей, которые познакомят с языком. Последний блок уроков откроет дверь в параллельное программирование на Go.
Учебник обучит вас синтаксису языка, даст множество заданий для самостоятельной работы. Все задания можно выполнять в тестовой среде.
Go Programming by Example
Обучение программированию происходит на примерах кода реально работающих приложений и ресурсов. Удобно, ведь сразу запоминается синтаксис, манера кодить и сами особенности языка. Рассматриваемых тем в книге масса, и вот некоторые из них: среда разработки, массивы, функции, указатели, структуры, методы, программирование сокетов, баз данных и много других.
The Go Bestiary
Это не учебник, а, скорее, сборник советов и рекомендаций, собранных воедино. Здесь вы найдете способы структурировать свои проекты, увидите распространенные и нежелательные ошибки. Это учебное пособие рассчитано на более опытных программистов, но и тем, кто работал с другими языками, будет полезна изложенная здесь информация.
Learning Go Programming
Это пошаговое практическое руководство, которое поможет вам быстро начать работу с Go. Начнете с изучения основ языка Go, затем продолжите знакомиться с детальным описанием типов данных Go. После этого вы узнаете, как использовать идиомы параллелизма, чтобы избежать подводных камней и создавать программы, которые точно соответствуют ожидаемому поведению. Наконец, вы сможете использовать некоторые из наиболее важных функций GO, такие как сетевое программирование и интеграция с ОС, для создания эффективных приложений. Все концепции объясняются в четкой и сжатой форме.
Network Programming with Go
А вот книга для матерых программистов на Go. Вам предстоит погрузиться в важные аспекты сетевой архитектуры и Go, такие как сериализация данных, протоколы уровня приложений. Кроме основ, сетевое программирование охватывает ключевые вопросы по HTTP и HTTPS, шаблонам, удаленным вызовам процедур (RPC) и т.д.
Кроме того, автор Ян Ньюмарч поможет вам в создании и подключении к полноценному веб-серверу на основе Go. Эта книга может служить как важным учебным пособием, так и справочным материалом по сетям Go.
Mastering Concurrency in Go
Учебник расскажет вам о параллелизме, о том, как Go использует ее, о возможностях и структурах ядра параллелизма Go. На каждом этапе в книге будут представлены реальные, полезные фрагменты кода с подробным описанием используемых методов. К концу вы будете чувствовать себя уверенно, создавая безопасное, согласованное с данными, высокопроизводительную параллельную программу.
Цель этой книги — показать, как можно использовать Go для создания высокопроизводительных, надежных параллельных программ с уникальной формой многопоточности, в которой применяются процедуры, связывающиеся и синхронизирующиеся по каналам.
Mastering Go Web Services
Этот учебник познакомит вас с главными моментами проектирования, создания и развертывания веб-службы с применением идиоматических методов REST с акцентом на быструю, безопасную и гибкую работу. Первым делом вы создадите свой API с пакетом HTTP. Вы будете смотреть на создание и сборку вашего приложения, включая популярные структуры дизайна. Вы также увидите способы развертывания кода для подготовки и разработки. Наконец, вы увидите, как функции безопасности в Go могут использоваться для защиты от внедрения SQL-кода и компрометации конфиденциальных данных.
К концу этой книги вы достигнете высокого уровня мастерства в создании и развертывании веб-сервисов и веб-API с помощью Go.