LibCoder

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

1C Agda Go
Go: Идиомы и паттерны проектирования. 2 изд
Дата выхода: 2025
Издательство: Спринт Бук
Количество страниц: 499
Тип файла: PDF
Добавил: LibCoder
Оглавление
Предисловие....16 Для кого написана книга....17 Условные обозначения....18 Использование примеров программного кода....19 Благодарности ко второму изданию....19 Благодарности к первому изданию....20 Глава 1. Настройка среды разработки для языка Go....22 Установка средств разработки для языка Go....22 Устранение неполадок при установке Go....23 Инструментарий Go....24 Ваша первая программа на Go....24 Создание модуля Go....24 Команда go build....25 Команда go fmt....26 Команда go vet....29 Выбор инструментов....30 Visual Studio Code....30 GoLand....31 Онлайн-песочница....33 Make-файлы....35 Обязательства по совместимости с Go....36 В курсе последних событий....37 Упражнения....38 Резюме....38 Глава 2. Предописанные типы и объявление переменных....39 Предописанные типы....39 Нулевое значение....39 Литералы....41 Логические значения....43 Числовые типы....43 Пробуем использовать строки и руны....49 Явное преобразование типов....50 Нетипизированные литералы....52 var или :=....52 Использование ключевого слова const....55 Типизированные и нетипизированные константы....57 Неиспользуемые переменные....58 Именование переменных и констант....59 Упражнения....61 Резюме....61 Глава 3. Составные типы....62 Массивы — слишком строгие для того, чтобы использовать их напрямую....62 Срезы....64 Функция len....66 Функция append....66 Емкость среза....67 Функция make....69 Очистка среза....70 Объявление собственного среза....71 Срезание срезов....72 Функция copy....75 Преобразование массивов в срезы....77 Преобразование срезов в массивы....77 Строки в сочетании с рунами и байтами....79 Карты....83 Чтение и запись карты....85 Идиома «запятая-ok»....86 Удаление из карты....87 Очистка карты....87 Сравнение карт....87 Использование карты в качестве множества....88 Структуры....89 Анонимные структуры....92 Сравнение и преобразование структур....92 Упражнения....94 Резюме....95 Глава 4. Блоки, затенение переменных и управляющие конструкции....96 Блоки....96 Затенение переменных....97 Оператор if....100 Четыре вида оператора for....102 Полный оператор for....102 Оператор for, использующий только условие....103 Бесконечный оператор for....103 Ключевые слова break и continue....104 Оператор for-range....106 Операторы for с метками....111 Выбор подходящего оператора for....113 Оператор switch....114 Пустые переключатели....117 Что лучше выбрать, if или switch?....119 Оператор goto....121 Упражнения....123 Резюме....124 Глава 5. Функции....125 Объявление и вызов функций....125 Имитация именованных и опциональных параметров....126 Вариативные входные параметры и срезы....127 Возврат нескольких значений....128 При возврате нескольких значений всегда возвращается несколько значений....129 Игнорирование возвращаемых значений....130 Именованные возвращаемые значения....131 Никогда не используйте пустые операторы возврата!....132 Функции являются значениями....133 Объявление функциональных типов....136 Анонимные функции....137 Замыкания....139 Передача функций в качестве параметров....141 Возвращение функций из функций....142 Оператор defer....143 Go — язык с передачей параметров по значению....148 Упражнения....151 Резюме....151 Глава 6. Указатели....152 Общие сведения об указателях....152 Не бойтесь указателей....156 Указатели служат признаком изменяемых параметров....158 Указатели — это крайняя мера....162 Влияние передачи указателей на производительность....163 Различие между нулевым значением и отсутствием значения....164 Различие между картами и срезами....165 Использование срезов в качестве буферов....169 Уменьшение нагрузки на сборщик мусора....170 Настройка сборщика мусора....174 Упражнения....176 Резюме....176 Глава 7. Типы, методы и интерфейсы....177 Типы в Go....177 Методы....178 Передача приемника по ссылке и по значению....179 Обрабатывайте в методах пустые ссылки на приемники....182 Методы тоже являются функциями....184 Функции или методы?....185 Объявление типа — это не наследование....185 Типы являются исполняемой документацией....186 Йота иногда используется для создания перечислений....187 Используйте встраивание для реализации композиции....190 Встраивание — это не наследование....191 Общее представление об интерфейсах....193 Интерфейсы обеспечивают типобезопасную утиную типизацию....194 Встраивание и интерфейсы....198 Принимайте интерфейсы, возвращайте структуры....198 Интерфейсы и значение nil....200 Интерфейсы можно сравнивать....201 Пустой интерфейс ничего не сообщает....203 Утверждения типа и переключатели типа....204 Используйте утверждения типа и переключатели типа как можно реже....207 Функциональные типы — ключ к интерфейсам....210 Неявные интерфейсы облегчают внедрение зависимостей....211 Утилита Wire....216 Go нельзя назвать объектно-ориентированным языком (и это здорово!)....216 Упражнения....217 Резюме....217 Глава 8. Обобщенные типы....218 Обобщенные типы уменьшают количество повторяющегося кода и повышают типобезопасность....218 Введение в обобщенные типы....221 Обобщенные функции абстрагируют алгоритмы....224 Обобщенные типы и интерфейсы....226 Используйте списки типов для определения операторов....228 Вывод типов и обобщенные типы....231 Списки типов накладывают ограничения на константы и реализации....231 Объединение обобщенных функций с обобщенными структурами....232 Еще о поддержке сравнения....235 Что остается за бортом....236 Идиоматический Go-код и обобщенные типы....238 Добавление обобщенных типов в стандартную библиотеку....241 Какие нововведения нас ожидают....241 Упражнения....242 Резюме....242 Глава 9. Ошибки....243 Как обрабатывать ошибки. Основы....243 Используйте строки в случае простых ошибок....245 Сигнальные ошибки....246 Ошибки являются значениями....248 Обертывание ошибок....251 Обертывание сразу нескольких ошибок....253 Функции Is и As....255 Обертывание ошибок с помощью оператора defer....259 Функции panic и recover....260 Извлечение трассировки стека из ошибки....263 Упражнения....263 Резюме....264 Глава 10. Модули, пакеты и операции импорта....265 Репозитории, модули и пакеты....265 Файл go.mod....266 Выбор версии Go для сборки кода с помощью директивы go....267 Директива require....269 Компиляция пакетов....269 Операции импорта и экспорта....269 Создание и использование пакета....270 Именование пакетов....272 Переопределение имени пакета....273 Комментарии пакета и Go Doc....274 Пакет internal....277 Циклические зависимости....278 Как следует подходить к организации кода модуля....279 Переименование и реорганизация API без потери работоспособности....281 По возможности не используйте функцию init....282 Работа с модулями....283 Импортирование стороннего кода....284 Работа с версиями....288 Выбор минимальной версии....290 Обновление до совместимых версий....292 Обновление до несовместимых версий....292 Вендоринг....294 Сайт pkg.go.dev....295 Публикация своего модуля....296 Версионирование своего модуля....297 Переопределение зависимостей....298 Отзыв версии модуля....299 Использование рабочих пространств для одновременного изменения модулей....300 Прокси-серверы модулей....304 Настройка прокси-сервера....304 Закрытые репозитории....305 Дополнительные подробности....305 Упражнения....305 Резюме....306 Глава 11. Инструменты Go....307 Тестирование небольших программ с помощью go run....307 Добавление сторонних инструментов с помощью go install....308 Форматирование инструкций импорта с помощью goimports....310 Использование сканеров качества кода....311 staticcheck....312 revive....313 golangci-lint....314 Сканирование уязвимых зависимостей с помощью govulncheck....316 Внедрение контента в программу....318 Внедрение скрытых файлов....322 Использование go generate....323 Работа с go generate и файлами Makefile....326 Чтение информации о сборке из двоичного файла Go....327 Сборка двоичных файлов Go для других платформ....328 Использование тегов сборки....329 Тестирование версий Go....331 Получение дополнительной информации об инструментах Go с помощью go help....331 Упражнения....332 Резюме....332 Глава 12. Конкурентность в Go....333 Когда следует использовать конкурентность....333 Горутины....335 Каналы....337 Чтение, запись и буферизация....337 Цикл for-range и каналы....339 Закрытие канала....339 Различия в поведении каналов....340 Оператор select....341 Принципы и паттерны конкурентного программирования....344 Следите за тем, чтобы конкурентности не было в ваших API....344 Горутины, циклы for и изменяющиеся переменные....345 Всегда закрывайте горутины....347 Использование контекста для завершения горутин....348 Когда следует использовать буферизованные и небуферизованные каналы....349 Противодавление....351 Отключение ветвей оператора select....353 Как установить тайм-аут для кода....354 Использование типа WaitGroup....355 Однократное выполнение кода....357 Собираем инструменты для обеспечения конкурентности....359 Когда вместо каналов следует использовать мьютексы....363 Атомарные операции — скорее всего, они вам не понадобятся....367 Где можно найти более подробную информацию о конкурентности....367 Упражнения....368 Резюме....368 Глава 13. Стандартная библиотека....369 Пакет io и его друзья....369 Пакет time....375 Монотонное время....377 Таймеры и тайм-ауты....378 Пакет encoding/json....378 Используйте теги структур для добавления метаданных....378 Демаршалинг и маршалинг....380 Чтение и запись JSON....381 Кодирование и декодирование JSON-потоков....382 Парсинг пользовательского формата JSON....384 Пакет net/http....387 Клиент....388 Сервер....389 ResponseController....395 Структурированное журналирование....396 Упражнения....399 Резюме....400 Глава 14. Контекст....401 Что такое контекст....401 Значения....404 Отмена....411 Контексты с ограниченным сроком действия....416 Управление отменой контекста в собственном коде....420 Упражнения....421 Резюме....422 Глава 15. Написание тестов ....423 Основы тестирования....423 Выдача сообщения о неудачном завершении теста....425 Подготовка и заключительная уборка....426 Тестирование с использованием переменных окружения....428 Расположение образцов тестовых данных....429 Кэширование результатов теста....429 Тестирование своего публичного API....430 Используйте модуль go-cmp для сравнения результатов тестов....431 Табличные тесты....433 Конкурентное выполнение тестов....435 Проверка степени покрытия кода....437 Фаззинг....439 Сравнительные тесты....447 Заглушки в Go....451 Пакет httptest....456 Интеграционные тесты и теги сборки....459 Выявление проблем конкурентности с помощью детектора состояний гонки....461 Упражнения....463 Резюме....463 Глава 16. «Здесь обитают драконы»: пакеты reflect, unsafe и cgo....464 Рефлексия позволяет работать с типами на этапе выполнения....465 Типы, разновидности и значения....467 Создание новых значений....471 Используйте рефлексию для проверки значения интерфейса на равенство nil....473 Используйте рефлексию для создания маршалера данных....474 Создавайте с помощью рефлексии функции для автоматизации повторяющихся задач....479 Рефлексию можно использовать для создания структур, но лучше этого не делать....480 Рефлексия не позволяет создавать методы....480 Используйте рефлексию только тогда, когда в этом есть смысл....481 Использовать пакет unsafe небезопасно....482 Использование Sizeof и Offsetof....484 Использование unsafe для преобразования внешних двоичных данных....486 Доступ к неэкспортируемым полям....490 Вспомогательные инструменты для пакета unsafe....490 Пакет cgo обеспечивает интеграцию, а не повышает производительность....491 Упражнения....496 Резюме....497 Иллюстрация на обложке....499 Об авторе....498

Описание

Ниже — практический обзор по теме «других».

Существует множество учебников, помогающих программистам со знанием других языков освоить его синтаксис, но этого недостаточно. Go моментально завоевал популярность у разработчиков веб-сервисов. Автор Джон Боднер познакомит вас с паттернами проектирования, созданными опытными инженерами Go, и обоснует их применение. Начните думать как Go-разработчик, вне зависимости от уровня подготовки. В книге собрана наиболее важная информация, необходимая для написания чистого и идиоматического кода. В обновленном издании также рассказывается и о современных инструментах Go, упрощающих решение задач, трудновыполнимых на других платформах.

5 причин купить книгуОбновленное, полностью переработанное и дополненное издание бестселлера.Научитесь писать идиоматический код и создавать проекты на Go.Сможете настраивать среду разработки Go для индивидуальной и командной работы, освоите приемы оптимизации производительности, потребления памяти и уменьшения нагрузки на сборщик мусора.Увидите, какие особенности Go обеспечивают высокую эффективность языка.Узнаете, какие возможности Go следует использовать с большой осторожностью или вообще не использовать.

На этом основные моменты по теме закрыты.

проектирования других какие использовать идиомы паттерны быстро завоевал

Частые вопросы

Можно ли скачать «Go: Идиомы и паттерны проектирования. 2 изд» бесплатно?

Да, «Go: Идиомы и паттерны проектирования. 2 изд» доступна для бесплатного скачивания на нашем сайте в формате PDF. Ссылка на файл находится на этой странице.

В каком формате и какого размера файл?

Книга предоставляется в формате PDF.

Кто автор и когда вышла книга?

автор — Боднер Джон, издательство Спринт Бук, год выпуска 2025, 499 страниц.

О чём книга «Go: Идиомы и паттерны проектирования. 2 изд»?

Go быстро завоевал популярность у разработчиков веб-сервисов.

Похожие материалы