RUSSIAN

Go: идиомы и паттерны проектирования

Book information

Publisher
"Издательский дом ""Питер"""
Year
2022
ISBN
9785446118854, 5446118855
Language
russian
Format
PDF
Filesize
6 MB (6553165 bytes)
Pages
416\414
Time added
2022-07-06 12:50:24

Description

Go быстро набирает популярность в качестве языка для создания веб-сервисов. Существует множество учебников по синтаксису Go, но знать его недостаточно. Автор Джон Боднер описывает и объясняет паттерны проектирования, используемые опытными разработчиками. В книге собрана наиболее важная информация, необходимая для написания чистого и идиоматического Go-кода. Вы научитесь думать как Go-разработчик, вне зависимости от предыдущего опыта программирования. Предисловие Для кого написана книга Условные обозначения Использование примеров программного кода Благодарности От издательства Глава 1. Настройка среды разработки для языка Go Установка средств разработки для языка Go Рабочее пространство Go Команда go Команды go run и go build Установка сторонних инструментов для Go Форматирование кода Выбор инструментов Visual Studio Code GoLand Онлайн-песочница make-файлы Обновление средств разработки Резюме Глава 2. Простые типы и объявление переменных Встроенные типы Нулевое значение Литералы Логические значения Числовые типы Пробуем использовать строки и руны Явное преобразование типов var или := Использование ключевого слова const Типизированные и нетипизированные константы Неиспользуемые переменные Именование переменных и констант Резюме Глава 3. Составные типы Массивы — слишком строгие для того, чтобы использовать их напрямую Срезы Функция len Функция append Емкость среза Функция make Объявление собственного среза Срезание срезов Преобразование массивов в срезы Функция copy Строки в сочетании с рунами и байтами Карты Чтение и запись карты Идиома «запятая-ok» Удаление из карты Использование карты в качестве множества Структуры Анонимные структуры Сравнение и преобразование структур Резюме Глава 4. Блоки, затенение переменных и управляющие конструкции Блоки Затенение переменных Выявление затененных переменных Оператор if Четыре вида оператора for Полный оператор for Оператор for, использующий только условие Бесконечный оператор for Ключевые слова break и continue Оператор for-range Операторы for с метками Выбор подходящего оператора for Оператор switch Пустые переключатели Что лучше выбрать: if или switch? Оператор goto Резюме Глава 5. Функции Объявление и вызов функций Имитация именованных и опциональных параметров Вариативные входные параметры и срезы Возврат нескольких значений При возврате нескольких значений всегда возвращается несколько значений Игнорирование возвращаемых значений Именованные возвращаемые значения Никогда не используйте пустые операторы возврата! Функции являются значениями Объявление функциональных типов Анонимные функции Замыкания Передача функций в качестве параметров Возвращение функций из функций Оператор defer Go — язык с передачей параметров по значению Резюме Глава 6. Указатели Общие сведения об указателях Не бойтесь указателей Указатели служат для указания изменяемых параметров Указатели — это крайняя мера Влияние передачи указателей на производительность Различие между нулевым значением и отсутствием значения Различие между картами и срезами Использование срезов в качестве буферов Уменьшение нагрузки на сборщик мусора Резюме Глава 7. Типы, методы и интерфейсы Типы в Go Методы Приемники указателей и приемники значений Пишите код методов с расчетом на экземпляр, равный nil Методы тоже являются функциями Функции или методы? Объявление типа не является наследованием Типы являются исполняемой документацией Йота (иногда) используется для создания перечислений Используйте встраивание для реализации композиции Встраивание не является наследованием Общее представление об интерфейсах Интерфейсы обеспечивают типобезопасную утиную типизацию Встраивание и интерфейсы Принимайте интерфейсы, возвращайте структуры Интерфейсы и значение nil Пустой интерфейс ничего не сообщает Утверждения типа и переключатели типа Используйте утверждения типа и переключатели типа как можно реже Функциональные типы — ключ к интерфейсам Неявные интерфейсы облегчают внедрение зависимостей Утилита Wire Go нельзя назвать объектно-ориентированным языком (и это здорово!) Резюме Глава 8. Ошибки Как обрабатывать ошибки: основы Используйте строки в случае простых ошибок Сигнальные ошибки Ошибки являются значениями Обертывание ошибок Функции Is и As Обертывание ошибок с помощью оператора defer Функции panic и recover Извлечение трассировки стека из ошибки Резюме Глава 9. Модули, пакеты и операции импорта Репозитории, модули и пакеты Файл go.mod Компиляция пакетов Операции импорта и экспорта Создание и использование пакета Именование пакетов Как следует подходить к организации кода модуля Переопределение имени пакета Комментарии пакета и godoc Пакет internal По возможности не используйте функцию init Циклические зависимости Переименование и реорганизация API без потери работоспособности Работа с модулями Импортирование стороннего кода Работа с версиями Выбор минимальной версии Обновление до совместимых версий Обновление до несовместимых версий Вендоринг Сайт pkg.go.dev Дополнительная информация Публикация своего модуля Версионирование своего модуля Прокси-серверы модулей Указание прокси-сервера Закрытые репозитории Резюме Глава 10. Конкурентность в Go Когда следует использовать конкурентность Горутины Каналы Чтение, запись и буферизация Цикл for-range и каналы Закрытие канала Различия в поведении каналов Оператор select Принципы и паттерны конкурентного программирования Следите за тем, чтобы конкурентности не было в ваших API Горутины, циклы for и изменяющиеся переменные Всегда закрывайте горутины Паттерн на основе канала done Прекращение выполнения горутины с помощью функции отмены Когда следует использовать буферизованные и небуферизованные каналы Противодавление Отключение ветвей оператора select Как можно установить тайм-аут для кода Использование типа WaitGroup Однократное выполнение кода Собираем инструменты для обеспечения конкурентности Когда вместо каналов следует использовать мьютексы Атомарные операции — скорее всего, они вам не понадобятся Где можно найти более подробную информацию о конкурентности Резюме Глава 11. Стандартная библиотека Пакет io и его друзья Пакет time Монотонное время Таймеры и тайм-ауты Пакет encoding/json Используйте теги структур для добавления метаданных Демаршализация и маршализация JSON, считыватели и записыватели Кодирование и декодирование JSON-потоков Парсинг пользовательского формата JSON Пакет net/http Клиент Сервер Промежуточный слой Резюме Глава 12. Контекст Что такое контекст Отмена Таймеры Управление отменой контекста в собственном коде Значения Резюме Глава 13. Написание тестов Основы тестирования Выдача сообщения о неудачном завершении теста Подготовка и заключительная «уборка» Расположение образцов тестовых данных Кэширование результатов теста Тестирование своего публичного API Используйте модуль go-cmp для сравнения результатов тестов Табличные тесты Проверка степени покрытия кода Сравнительные тесты Заглушки в Go Пакет httptest Интеграционные тесты и теги сборки Выявление проблем конкурентности с помощью детектора состояний гонки Резюме Глава 14. Здесь водятся драконы: пакеты reflect, unsafe и cgo Рефлексия позволяет нам работать с типами на этапе выполнения Типы, разновидности и значения Создание новых значений Используйте рефлексию для проверки значения интерфейса на равенство значению nil Используйте рефлексию для создания маршализатора данных Создавайте с помощью рефлексии функции для автоматизации повторяющихся задач Рефлексию можно использовать для создания структур, но лучше этого не делать Рефлексия не позволяет создавать методы Используйте рефлексию только тогда, когда в этом есть смысл Использовать пакет unsafe небезопасно Используйте пакет unsafe для преобразования внешних двоичных данных Пакет unsafe в сочетании со строками и срезами Вспомогательные инструменты для пакета unsafe Пакет cgo предназначен для обеспечения интеграции, а не повышения производительности Резюме Глава 15. Взгляд в будущее: обобщенные типы в Go Обобщенные типы уменьшают количество повторяющегося кода и повышают типобезопасность Добавление обобщенных типов в Go Используйте списки типов для определения операторов Обобщенные функции абстрагируют алгоритмы Списки типов накладывают ограничения на константы и реализации Что остается «за бортом» Идиоматический Go-код и обобщенные типы Какие нововведения нас ожидают Резюме Об авторе Об обложке

Similar books

Методология научных исследований и прикладной аналитики: Учебник. Изд. 5-е, дополн. и перераб. В 2 т. Т.2: Научные исследования: Мастерство и искусство научного мышления и научной работы / Methodology of Scientific Research and Practical Analytics: A Textbook: Fifth Edition. In two volumes. Vol.2: Scientific research: Art of scientific thinking and scientific work / Méthodologie de la recherche scientifique et de l’analytique appliquée: Manuel: Cinquième édition. En 2 tomes. T.2: Recherches scientifiques: Art de la pensée scientifique et du travail scientifique

2025 · PDF

Методы и понятия философии искусства: практикум : уровень подготовки кадров высшей квалификации: ассиснтурв-стажировка : специальности: 54.09.03 "Искусство дизайна (по видам)", 54.09.02 "Мастерство декоративно-прикладного искусства и народных промыслов (по видам)" : укрупненная группа специальностей: 54.00.00 "Изобразительное и прикладные виды искусств" : квалификация выпускника: "Преподаватель творческих дисциплин в высшей школе. Дизайнер", "Преподаватель творческих дисциплин в высшей школе. Художник декоративно-прикладного искусства" : форма обучения: очная

2022 · PDF

Разработка графического интерфейса пользователя информационной системы с использованием библиотеки QT: учебное пособие для студентов 1 курса направлений подготовки 09.04.02 "Информационные системы и технологии", 27.04.03 "Системный анализ и управление" очной формы обучения, 2 курса направления подготовки 10.05.03 "Информационная безопасность автоматизированных систем" очной формы обучения и 3 курса направления подготовки 09.03.02 "Информационные системы и технологии" очной и заочной форм обучения : учебное электронное издание

2021 · PDF

Археологические культуры Сибири в контексте кросс-культурных контактов в Евразии: к 300-летию первых научных археологических раскопок в Сибири (1722 г.) =: Archaeological Cultures of Siberia in the context of Cross-cultural contacts in Eurasia: dedicated to the 300th anniversary of the first scientific archaeological excavations in Siberia (1722) : материалы Международной археологической конференции молодых исследователей "Археологические культуры Сибири в контексте кросс-культурных контактов в Евразии: к 300-летию первых научных археологических раскопок в Сибири (1722 г.)" (Новосибирск, 21-25 ноября 2022 г.)

2022 · PDF

Трешниковские чтения - 2023. Современная географическая картина мира и технологии географического образования =: Treshnikov readings - 2023. Modern geographical global picture and technology of geographic education : материалы Всероссийской научно-практической конференции с международным участием, посвящённой памяти знаменитого российского океанолога, исследователя Арктики и Антарктики, академика Алексея Фёдоровича Трёшникова и 60-летию Ульяновского областного отделения Всероссийской общественной организации "Русское гаографическое общество" (13 апреля 2023)

2023 · PDF

Управление объектами интеллектуальной собственности. Искусство изобретать: учебник для обучающихся по направлениям подготовки 23.00.00 , направлениям подготовки 23.03.01 "Технология транспортных процессов", уровень образования-"бакалавриат", 23.03.03 "Эксплуатация транспортно-технологических машин и комплексов", уровень образования-"бакалавриат", 23.04.01 "Технология транспортных процессов", уровень образования- "магистратура", 23.04.03 "Эксплуатация транспортно-технологических машин и комплексов", уровень образования- "магистратура"

2022 · PDF