Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Go на практике

Покупка
Артикул: 712483.01.99
Доступ онлайн
799 ₽
В корзину
Go—превосходный системный язык. Созданный для удобной разработки современных приложений с параллельной обработкой, Go предоставляет встроенный набор инструментов для быстрого создания облачных, системных и веб-приложений. Знакомые с такими языками, как Java или С#, быстро освоят Go — достаточно лишь немного попрактиковаться, чтобы научиться писать профессиональный код. Книга содержит решения десятков типовых задач в ключевых областях. Следуя стилю сборника рецептов — проблема/решение/обсуждение, — это практическое руководство опирается на основополагающие концепции языка Go и знакомит с конкретными приемами использования Go в облаке, тестирования и отладки, маршрутизации, а также создания веб-служб, сетевых и многих других приложений. Издание адресовано опытным разработчикам, уже начавшим изучать язык Go и желающим научиться эффективно использовать его в своей профессиональной деятельности.
Батчер, М. Go на практике / Мэтт Батчер, Мэтт Фарина ; пер. с англ. Р.Н. Рагимова ; под науч. ред. А.Н. Киселева. - Москва : ДМК Пресс, 2017. - 374 с. - ISBN 978-5-97060-477-9. - Текст : электронный. - URL: https://znanium.com/catalog/product/1028131 (дата обращения: 22.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Мэтт Батчер, Мэтт Фарина

Go на практике

Matt Butcher, Matt Farina

GO IN PRACTICE

Мэтт Батчер, Мэтт Фарина

GO НА ПРАКТИКЕ

Москва, 2017

УДК 004.438Go
ББК 32.973.26-018.1
Б28

Батчер М., Фарина М.
Б28 
Go на практике / пер. с англ. Р. Н. Рагимова; науч. ред. А. Н. 
Киселев. – М.: ДМК Пресс, 2017. – 374 с.: ил. 

ISBN 978-5-97060-477-9

Go – превосходный системный язык. Созданный для удобной разработки современных приложений с параллельной обработкой, Go предоставляет встроенный набор инструментов для быстрого создания облачных, системных и веб-приложений. 
Знакомые с такими языками, как Java или C#, быстро освоят Go – достаточно 
лишь немного попрактиковаться, чтобы научиться писать профессиональный код.
Книга содержит решения десятков типовых задач в ключевых областях. Следуя 
стилю сборника рецептов – проблема/решение/обсуждение, – это практическое 
руководство опирается на основополагающие концепции языка Go и знакомит 
с конкретными приемами использования Go в облаке, тестирования и отладки, 
маршрутизации, а также создания веб-служб, сетевых и многих других приложений.
Издание адресовано опытным разработчикам, уже начавшим изучать язык Go 
и желающим научиться эффективно использовать его в своей профессиональной 
деятельности.

УДК 004.438Go
ББК 32.973.26-018.1

Copyright © Manning Publications Co. 2016. First published in the English 
language under the title ‘Go in Practice (9781633430075)’.
Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без 
письменного разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство 
не может гарантировать абсолютную точность и правильность приводимых 
сведений. В связи с этим издательство не несет ответственности за возможные 
ошибки, связанные с использованием книги.

ISBN 978-1-63343-007-5 (анг.) 
Copyright © 2016 by Manning  
 
Publications Co.
ISBN 978-5-97060-477-9 (рус.) 
© Оформление, издание, перевод,  
 
ДМК Пресс, 2017

Содержание

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

Введение ................................................................................................................ 11

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

О книге ...................................................................................................................... 15

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

Об изображении на обложке .............................................................. 18

Часть I. Основные понятия и принципы ................................... 19

Глава 1. Введение в язык Go ............................................................... 20
1.1. Что представляет собой язык Go? ............................................................... 21
1.2. Примечательные особенности языка Go................................................... 23

1.2.1. Возврат нескольких значений .............................................................. 23
1.2.2. Современная стандартная библиотека .............................................. 25
1.2.3. Параллельная обработка с помощью сопрограмм  
и каналов ................................................................................................................. 28
1.2.4. Go – больше, чем язык ............................................................................ 32

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

1.3.1. C и Go ............................................................................................................ 38
1.3.2. Java и Go ....................................................................................................... 40
1.3.3. Python, PHP и Go ..................................................................................... 41
1.3.4. JavaScript, Node.js и Go ........................................................................... 43

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

1.4.1. Установка Go .............................................................................................. 45
1.4.2. Работа с Git, Mercurial и другими системами управления  
версиями ................................................................................................................. 46
1.4.3. Знакомство с рабочей областью .......................................................... 46
1.4.4. Работа с переменными среды ............................................................... 47

1.5. Приложение Hello Go ...................................................................................... 47
1.6. Итоги ..................................................................................................................... 49

 Содержание

Глава 2. Надежная основа ..................................................................... 51
2.1. CLI-приложения на Go ................................................................................... 52

2.1.1. Флаги командной строки ....................................................................... 52
2.1.2. Фреймворки командной строки .......................................................... 59

2.2. Обработка конфигурационной информации .......................................... 65
2.3. Работа с действующими веб-серверами .................................................... 73

2.3.1. Запуск и завершение работы сервера ................................................ 74
2.3.2. Маршрутизация веб-запросов .............................................................. 79

2.4. Итоги ..................................................................................................................... 90

Глава 3. Параллельные вычисления в Go .............................. 92
3.1. Модель параллельных вычислений в Go .................................................. 92
3.2. Работа с сопрограммами ................................................................................. 93
3.3. Работа с каналами ...........................................................................................108
3.4. Итоги ...................................................................................................................122

Часть II. Надежные приложения ...................................................123

Глава 4. Обработка ошибок и аварий .......................................124
4.1. Обработка ошибок ..........................................................................................125
4.2. Система аварий ................................................................................................134

4.2.1. Отличия аварий от ошибок .................................................................135
4.2.2. Работа с авариями ...................................................................................136
4.2.3. Восстановление после аварий  ...........................................................139
4.2.4. Аварии и сопрограммы .........................................................................145

4.3. Итоги ...................................................................................................................154

Глава 5. Отладка и тестирование .................................................155
5.1. Определение мест возникновения ошибок ............................................156

5.1.1. Подождите, где мой отладчик? ..........................................................156

5.2. Журналирование..............................................................................................157

5.2.1. Журналирование в Go ...........................................................................157
5.2.2. Работа с системными регистраторами ............................................168

5.3. Доступ к трассировке стека .........................................................................173
5.4. Тестирование .....................................................................................................176

5.4.1. Модульное тестирование .....................................................................177
5.4.2. Порождающее тестирование ...............................................................183

5.5. Тестирование производительности и хронометраж ............................186
5.6. Итоги ...................................................................................................................194

Содержание  7

Часть III. Интерфейсы приложений ...........................................195

Глава 6. Приемы работы с шаблонами HTML  
и электронной почты ................................................................................196
6.1. Работа с HTML-шаблонами ........................................................................197

6.1.1. Обзор пакетов для работы с HTML-разметкой  
в стандартной библиотеке ..............................................................................197
6.1.2. Добавление функциональных возможностей в шаблоны ........199
6.1.3. Сокращение затрат на синтаксический разбор шаблонов........203
6.1.5. Соединение шаблонов ...........................................................................207

6.2. Использование шаблонов при работе с электронной почтой ..........218
6.3. Итоги ...................................................................................................................220

Глава 7. Обслуживание и получение ресурсов  
и форм ....................................................................................................................222
7.1. Обслуживание статического содержимого ............................................223
7.2. Обработка форм ...............................................................................................238

7.2.1. Введение в формы ..................................................................................238
7.2.2. Работа с файлами и предоставление составных данных ...........241
7.2.3. Работа с необработанными составными данными ......................249

7.3. Итоги ...................................................................................................................253

Глава 8. Работа с веб-службами ...................................................255
8.1. Использование REST API ............................................................................256

8.1.1. Использование HTTP-клиента ..........................................................256
8.1.2. При возникновении сбоев....................................................................258

8.2. Передача и обработка ошибок по протоколу HTTP ...........................263

8.2.1. Генерация пользовательских ошибок ..............................................264
8.2.2. Чтение и использование пользовательских сообщений  
об ошибках ...........................................................................................................267

8.3. Разбор и отображение данных в формате JSON ..................................270
8.4. Версионирование REST API .......................................................................274
8.5. Итоги ...................................................................................................................279

Часть IV. Размещение приложений в облаке ...................281

Глава 9. Использование облака ....................................................282
9.1. Что такое облачные вычисления? .............................................................283

9.1.1. Виды облачных вычислений ...............................................................283

 Содержание

9.1.2. Контейнеры и натуральные облачные приложения ...................286

9.2. Управление облачными службами ............................................................288

9.2.1. Независимость от конкретного провайдера  облачных  
услуг .......................................................................................................................289
9.2.2. Обработка накапливающихся ошибок ............................................293

9.3. Выполнение на облачных серверах ...........................................................295

9.3.1. Получение сведений о среде выполнения ......................................295
9.3.2. Сборка для облака ..................................................................................299
9.3.3. Мониторинг среды выполнения ........................................................302

9.4. Итоги ...................................................................................................................305

Глава 10. Взаимодействие облачных служб ....................306
10.1. Микрослужбы и высокая доступность ..................................................307
10.2. Взаимодействия между службами ..........................................................309

10.2.1. Ускорение REST API ...........................................................................309
10.2.2. Выход за рамки прикладного программного интерфейса  
REST .......................................................................................................................317

10.3. Итоги .................................................................................................................327

Глава 11. Рефлексия и генерация кода .................................328
11.1. Три области применения рефлексии ......................................................328
11.2. Структуры, теги и аннотации ...................................................................343

11.2.1. Аннотирование структур ...................................................................344
11.2.2. Использование тегов ...........................................................................345

11.3. Генерация Go-кода с помощью Go-кода ................................................354
11.4. Итоги .................................................................................................................361

Предметный указатель ..........................................................................363

Предисловие

Когда я услышал, что Мэтт Фарина и Мэтт Батчер начали работу над 
новой книгой о языке Go, это меня очень взволновало. Они оба много 
лет были важнейшими действующими лицами в экосистеме Go, обладают большим опытом работы и способны добавить в аромат содержания этой книги запахи специй прошлых учебных пособий. Эта 
книга должна стать преемницей книги «Go in Action», развивающей 
заложенные там основы и переводящей их в практическое русло.
Книга разбита на четыре простые в освоении части, каждая из которых имеет собственную направленность. Часть 1 освежает в памяти 
основные идеи языка Go. Если вы спешите и уже обладаете навыками, позволяющими уверенно писать код на языке Go, можете смело 
пропустить этот раздел, хотя я не рекомендую этого делать. Знакомясь с окончательным вариантом рукописи, я обнаружил в ней самородки такого размера, что, полагаю, главы этой части будут полезны 
всем читателям.
Часть 2 погружает читателя в недра механики управления Goприложениями. Глава об ошибках является одним из лучших описаний Go-ошибок из всех, прочитанных мной прежде, а глава, посвященная отладке и тестированию, содержит массу полезной информации 
об этом важном этапе разработки, помогающем поднять приложение 
с уровня, требующего доказательства идеи, до уровня надежной производственной системы.
В третьей части вы узнаете о способах создания пользовательских 
интерфейсов. Глава по шаблонам является отличным руководством 
по самой сложной, как многие полагают, части экосистемы Go. Она 
знакомит с практическими приемами многократного использования 
шаблонов и создания выразительных веб-интерфейсов. Приведенные примеры соответствуют уровню книги, поскольку трудно найти 
примеры использования шаблонов, легко переносимые в реальные 
приложения. Затем вы увидите, как создавать и использовать REST 
API, и познакомитесь с хитростями управления версиями этого API.
Заключительная часть книги посвящена теме функциональной 
совместимости, необходимой практически любому современному 
приложению. Она позволяет глубоко погрузиться в облачную инфраструктуру и увидеть, как язык Go вписывается в модель облачных 

 Предисловие

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

— Брайан Кетелсен (Brian Ketelsen),
один их авторов книги «Go in action»,
один из основателей «Gopher academy»

Доступ онлайн
799 ₽
В корзину