Go на практике. 2 изд

Go на практике. 2 изд

Go на практике. 2 изд
Автор: Батчер Мэтт, Козыра Натан, Фарина Мэтт
Дата выхода: 2026
Издательство: Питер
Количество страниц: 400
Размер файла: 5.9 MB
Тип файла: PDF
Добавил: katyaprogamer
 Проверить на вирусы

От издательства....24

О научном редакторе русскоязычного издания....24

Иллюстрация на обложке....23

Об авторах....22

Благодарности....16

Предисловие....14

О книге....18

Кому стоит прочитать эту книгу....18

Структура издания....18

О коде....20

Дополнительные онлайн-ресурсы....21

Часть I. Основы языка Go....25

Глава 1. Начало работы с Go....26

1.1. Язык Go....26

1.2. Важные особенности Go....29

1.2.1. Возврат нескольких значений....29

1.2.2. Современная стандартная библиотека....31

1.2.3. Реализация конкурентности с помощью горутин и каналов....34

1.2.4. Инструментарий Go....38

1.3. Место Go среди других языков программирования....45

1.3.1. C и Go....45

1.3.2. Rust, Zig, Nim и Go....47

1.3.3. Java и Go....47

1.3.4. Python, PHP, JavaScript и Go....49

1.4. Первые шаги в работе с Go....51

1.4.1. Установка Go....51

1.4.2. Работа с Git и системами контроля версий....51

1.4.3. Изучение рабочего пространства....52

1.4.4. Переменные окружения....52

1.4.5. Использование ИИ-инструментов вместе с Go....52

1.5. Привет, Go....53

Резюме....55

Глава 2. Создание консольного приложения....56

2.1. Создание CLI-приложений на языке Go....57

2.1.1. Флаги командной строки....57

2.1.2. Определение допустимых значений с помощью перечислений....60

2.1.3. Срезы, массивы и словари....62

2.1.4. Фреймворки для создания консольных приложений....63

2.2. Работа с конфигурацией....69

2.2.1. Использование конфигурационных файлов....70

2.2.2. Передача конфигурации через переменные окружения....75

2.3. Работа с веб-серверами в реальных условиях....77

2.3.1. Запуск и завершение работы сервера....77

2.3.2. Корректное завершение работы с использованием сигналов ОС....78

2.3.3. Маршрутизация веб-запросов....81

Резюме....91

Глава 3. Структуры, интерфейсы и обобщения....92

3.1. Представление данных с помощью пользовательских структур....93

3.1.1. Создание пользовательских структур данных....93

3.1.2. Функции внутри структур....95

3.1.3. Анонимные идентификаторы....98

3.1.4. Структурные теги....98

3.1.5. Преобразование данных в формат JSON....100

3.2. Сравнение Go с функциональными и объектно-ориентированными языками программирования....101

3.3. Расширение функциональности с помощью интерфейсов....106

3.4. Упрощение кода с помощью обобщений....109

3.4.1. Использование функций с обобщениями....112

3.4.2. Использование ограничений и аппроксимации типов....114

Резюме....116

Часть II. Создание надежных приложений....117

Глава 4. Обработка ошибок и паник....118

4.1. Обработка ошибок....119

4.1.1. Рекомендации по работе со значением nil....122

4.1.2. Пользовательские типы ошибок....125

4.1.3. Переменные ошибок....126

4.2. Оборачивание ошибок....129

4.3. Механизм паники....130

4.3.1. Отличие паники от ошибки....130

4.3.2. Обработка паник....132

4.3.3. Восстановление после паники....134

4.3.4. Перехват паники с помощью оператора defer....135

4.3.5. Обработка паник, возникших в горутинах....140

Резюме....148

Глава 5. Конкурентность в Go....149

5.1. Модель конкурентности в Go....150

5.2. Работа с горутинами....151

5.2.1. Ожидание завершения горутин....152

5.2.2. Блокировка с помощью мьютекса....157

5.3. Работа с каналами....162

5.3.1. Использование каналов....163

5.3.2. Закрытие каналов....166

5.3.3. Блокировка с помощью буферизованных каналов....171

Резюме....174

Глава 6. Форматирование, тестирование, отладка и оценка производительности....175

6.1. Поддержание чистоты кода и структуры проекта....176

6.1.1. Форматирование кода....176

6.1.2. Выявление типичных ошибок с помощью go vet....179

6.1.3. Обновление зависимостей....182

6.2. Логирование....182

6.2.1. Отправка логов в разные каналы вывода....186

6.2.2. Структурированное логирование....188

6.2.3. Получение доступа к трассировке стека и ее захват....190

6.3. Модульное тестирование в Go....193

6.3.1. Создание тестового набора с использованием табличного подхода....193

6.3.2. Фаззинг-тестирование....197

6.3.3. Именование тестов....202

6.3.4. Проверка тестового покрытия с помощью go cover....203

6.3.5. Подождите, а где отладчик?....205

6.4. Оценка и оптимизация производительности....205

Резюме....208

Глава 7. Доступ к файлам и основы сетевого взаимодействия....209

7.1. Работа с файлами....210

7.1.1. Чтение файлов....210

7.1.2. Запись в файлы....214

7.2. Организация сетевого взаимодействия через TCP....216

7.2.1. Логирование в сетевой ресурс....216

7.2.2. Обратное давление при сетевом логировании....218

7.3. Основы сетевого взаимодействия по UDP....220

7.4. Веб-сокеты и события, отправляемые сервером....222

7.4.1. Реализация онлайн-чата с использованием веб-сокетов....223

7.4.2. События, отправляемые сервером....229

Резюме....234

Часть III. Создание полноценных веб-приложений....235

Глава 8. Создание HTTP-сервера....236

8.1. Маршрутизация запросов и обработка данных....237

8.1.1. Маршрутизация на основе HTTP-методов....238

8.1.2. Расширение контроля над сервером....243

8.2. Маршрутизация на основе значений, извлеченных из пути запроса....246

8.2.1. Обработка данных POST-запросов и параметров запроса....249

8.2.2. Обработка данных форм....251

8.2.3. Чтение и запись cookie и других заголовков....254

8.2.4. Обработка веб-токенов JSON....257

8.3. Генерация ошибок и базовая аутентификация....259

Резюме....261

Глава 9. HTML-шаблоны и шаблоны электронных писем....262

9.1. Работа с HTML-шаблонами....263

9.1.1. Обзор стандартного пакета для работы с HTML....263

9.1.2. Добавление функциональности в шаблоны....268

9.1.3. Ограничение парсинга шаблонов....271

9.1.4. Когда выполнение шаблона завершается с ошибкой....272

9.1.5. Комбинирование шаблонов....275

9.2. Использование шаблонов для электронных писем....285

Резюме....287

Глава 10. Отправка и получение данных....288

10.1. Раздача статического содержимого....289

10.1.1. Раздача подкаталогов....291

10.1.2. Использование файлового сервера с пользовательскими страницами ошибок....292

10.1.3. Встраивание файлов в исполняемый файл....294

10.1.4. Раздача содержимого из альтернативного местоположения....296

10.2. Продвинутая обработка форм....298

10.2.1. Обработка запросов с данными формы....299

10.2.2. Обращение к нескольким значениям одного поля формы....300

10.2.3. Работа с файлами и отправка составного содержимого....301

10.2.4. Загрузка нескольких файлов....303

10.2.5. Проверка допустимости типа загружаемого файла....305

10.2.6. Инкрементное сохранение загружаемого файла....307

Резюме....311

Глава 11. Работа с внешними сервисами....312

11.1. Использование REST API в качестве полнофункционального клиента....313

11.1.1. Использование HTTP-клиента....313

11.1.2. Обработка ошибок....315

11.2. Обработка и передача ошибок по HTTP....319

11.2.1. Создание пользовательских ошибок....321

11.2.2. Обработка пользовательских ошибок....323

11.3. Парсинг и преобразование данных JSON....325

11.4. Версионирование REST API....329

11.4.1. Версия API в URL-адресе....329

11.4.2. Версия API в типе содержимого....331

11.5. Работа с протоколом gRPC....333

Резюме....338

Часть IV. Go в облаке, микросервисы и другие специализированные темы....339

Глава 12. Облачные приложения и взаимодействие между сервисами....340

12.1. Основы облачных вычислений....341

12.1.1. Модели облачных вычислений....341

12.1.2. Контейнеры и облачно-ориентированные приложения....343

12.2. Микросервисы и обеспечение их высокой доступности....346

12.3. Взаимодействие между сервисами....349

12.3.1. Ускорение REST-взаимодействия....349

12.4. Запуск приложений на облачных серверах....357

12.4.1. Определение среды во время выполнения....358

12.4.2. Сборка приложения для облачной среды....361

12.5. Мониторинг среды выполнения....364

Резюме....366

Глава 13. Рефлексия, генерация кода и продвинутые возможности Go....367

13.1. Три составляющие системы рефлексии....368

13.1.1. Переключение логики на основе типа и вида....369

13.1.2. Проверка реализации интерфейса....373

13.1.3 Анализ полей структуры....377

13.2. Структуры, теги и аннотации....381

13.2.1. Аннотирование структур....381

13.2.2. Использование тегов....383

13.2.3. Обработка тегов в структуре....384

13.3. Генерация кода средствами самого Go....390

13.4. Взаимодействие с кодом на других языках....396

Резюме....398

Итак, вы освоили азы Go, что дальше? Чтобы создавать надежные и готовые к использованию Go-приложения, вам нужно научиться реализовывать конкурентность, налаживать сетевые взаимодействия, получать доступ к файлам, использовать такие нативные протоколы передачи данных, как gRPC и TCP/REST, а также разбираться во множестве практических нюансов. В этой книге приводятся готовые решения, которые можно незамедлительно применить в повседневной работе.

Здесь вы найдете описание десятков техник разработки и сопровождения Go-приложений в формате «проблема — решение — обсуждение». Издание охватывает новейшие возможности языка Go, включая дженерики, обработку паник и ошибок, современные модели конкурентности, а также такие продвинутые темы, как рефлексия и генерация кода. Кроме того, авторы дают полезные советы по интеграции в ваш процесс разработки ИИ-инструментов.

5 причин купить книгу:

  1. Описание десятков практических техник разработки и сопровождения Go-приложений в формате "проблема — решение — обсуждение".
  2. В книге приводятся готовые решения, которые можно незамедлительно применить в повседневной работе.
  3. Реализация конкурентности с помощью горутин и каналов.
  4. Веб-серверы и микросервисы.
  5. Логирование, кэширование и доступ к данным.

Похожее:

Список отзывов:

Нет отзывов к книге.