Go на практике
Покупка
Издательство:
ДМК Пресс
Перевод:
Рагимов Р. Н.
Науч. ред.:
Киселев Артём Николаевич
Год издания: 2017
Кол-во страниц: 374
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-477-9
Артикул: 712483.01.99
Go—превосходный системный язык. Созданный для удобной разработки современных приложений с параллельной обработкой, Go предоставляет встроенный набор инструментов для быстрого создания облачных, системных и веб-приложений. Знакомые с такими языками, как Java или С#, быстро освоят Go — достаточно лишь немного попрактиковаться, чтобы научиться писать профессиональный код. Книга содержит решения десятков типовых задач в ключевых областях. Следуя стилю сборника рецептов — проблема/решение/обсуждение, — это практическое руководство опирается на основополагающие концепции языка Go и знакомит с конкретными приемами использования Go в облаке, тестирования и отладки, маршрутизации, а также создания веб-служб, сетевых и многих других приложений. Издание адресовано опытным разработчикам, уже начавшим изучать язык Go и желающим научиться эффективно использовать его в своей профессиональной деятельности.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Мэтт Батчер, Мэтт Фарина 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»