Основы языка Go
Основы языка Go - философия простоты, модель компиляции и идиоматичный подход к системной разработке.
Что требуется знать перед началом изучения языка программирования Go
Go — это статически типизированный язык программирования общего назначения, разработанный компанией Google для создания эффективных, масштабируемых и надежных систем.
Рекомендации по разработке на Go
Набор советов, правил, принципов и обычаев в разработке на этом языке.
GoLand — IDE для разработки на Go
Обзор GoLand — установка, интерфейс, GOROOT и модули, навигация, рефакторинг, отладка горутин, запуск и первая программа на Go.
История языка Go
История Go - инженерные цели языка, философия простоты и эволюция инструментов экосистемы.
Экосистема приложений на Go
Экосистема приложений на Go - встроенные инструменты, workflow разработки и практики сопровождения проектов.
Синтаксис и пунктуация в Go
Кавычки, rune и string, точка, запятая, автоматическая вставка точки с запятой, скобки, подчёркивания и типичные ошибки новичков в Go.
Ключевые слова языка Go
Предопределённые идентификаторы не являются ключевыми словами, но имеют специальное значение в языке. Их можно переопределить в локальной области видимости, но делать это не рекомендуется.
Встроенные функции и пакеты Go
Набор функций, которые включены в стандартную библиотеку языка.
Особенности языка Go
Особенности Go - интерфейсы, композиция, модель ошибок и практики написания поддерживаемого кода.
Синтаксические конструкции Go
Go вводит конкурентность через встроенные синтаксические конструкции и правила выполнения.
Области применения Go
Ниже рассматриваются основные направления практического применения Go, объяснённые через призму его технических характеристик и требований реальных инфраструктур.
Типы данных и объявление переменных в Go
Типизация, набор правил определения типа данных значений языка.
Операторы и управляющие конструкции в Go
Рассмотрим операторы и управляющие конструкции в их естественном порядке появления в повседневной практике — сначала — операторы, затем — условные выражения, и наконец — циклы.
Функции и методы в Go
Функции и методы в Go - приёмники, композиция типов и идиоматичный подход к поведению без классов.
Фреймворки и библиотеки Go
Фреймворки и библиотеки Go - обзор экосистемы, HTTP-стек и особенности работы с популярными инструментами.
Обработка ошибок в Go
Ошибки — это значения произвольных типов, реализующих интерфейс error.
Тестирование в Go
Тесты в Go — пакет testing, table-driven tests, testify, httptest, моки через интерфейсы и покрытие кода.
Работа с базами данных из Go
Работа с базами данных из Go - подключение драйверов, запросы и организация слоя доступа к данным.
Асинхронность и горутины
Асинхронность и горутины в Go - модель конкурентности, каналы взаимодействия и практики устойчивого параллельного кода.
Практикум GoHTMLParser
Пошаговый практикум CLI-парсера HTML — 5 этапов от go mod init до HTTP-клиента, обхода DOM, flag и table-driven тестов.
GoEmailVerifier — практикум
Пошаговая CLI-утилита на Go — проверка email через DNS (MX) и SMTP (RCPT TO), flag, net/smtp и table-driven тесты.
Популярные проекты на языке Go
Популярные проекты на Go - архитектурные подходы и примеры инфраструктурных инструментов из реальной практики.
Важные интерфейсы и типы Go
Go часто используется в трёх основных сценариях — консольные утилиты, HTTP-сервисы и фоновые процессы. Рассмотрим, какие типы и интерфейсы задействованы в каждом.
Первая программа на Go
Гайд по установке и настройке с написанием первой программы и её запуском.
Пример микросервиса на Go
Пример микросервиса на Go - обработчик HTTP-запроса, структура сервиса и минимальный серверный каркас.
Простые приложения на Go
Примеры простых и полезных консольных приложений с демонстрацией концепций языка.
Первая программа на Gin
REST API на Gin — маршруты, JSON, middleware, разбор кода и запуск сервера.
Первая программа на Echo
REST API на Echo — маршруты, JSON, middleware, return error и совместимость с net/http.
Первая программа на Fiber
REST API на Fiber — Express-подобный API поверх fasthttp, разбор кода и ограничения.
Веб на стандартной библиотеке Go
HTTP-сервер на net/http — маршрутизация, формы, middleware, html/template и корректная остановка без фреймворков.
Строки, руны и Unicode в Go
Как устроены string и rune, итерация по символам, пакет strings и типичные ошибки при работе с текстом.
TCP и UDP в Go
Сетевое программирование на net — TCP, UDP, UNIX domain sockets; echo-сервер и связь с WebSocket.
Рефлексия в Go
Пакет reflect — когда уместен, type assertion и теги структур; альтернативы без runtime-анализа типов.
Модули, workspace, embed и slog
go work для монорепо, каталог vendor, встраивание статики через embed и структурированное логирование slog.
Справочник по языку Go
Для получения количества Unicode-символов используется utf8.RuneCountInString(s).
Механика языка и гонки данных
init, пустой идентификатор, импорт ради побочных эффектов, направленные каналы и детектор гонок -race.
Дженерики в Go
Обобщённое программирование в Go 1.18+ — type parameters, constraints, generic-функции и типы, пакеты slices/maps и когда достаточно интерфейса.
gRPC в Go
Практика gRPC на Go — Protocol Buffers, .proto, protoc-gen-go-grpc, сервер и клиент, streaming и связь с REST.
CLI на cobra и viper
Консольные утилиты на Go — cobra для команд и флагов, viper для конфигурации, embed и обработка сигналов UNIX.
WebSocket в Go
Двусторонний канал поверх HTTP — upgrade, сервер и клиент на gorilla/websocket, отличие от REST и TCP.
Профилирование, trace и fuzz в Go
pprof, go tool trace, benchstat, fuzzing и оптимизация Go-кода — практика из toolchain без догадок.
package main и func main() — исполняемая программа Go
Чем package main отличается от библиотечного пакета, зачем func main() и как go run связан с точкой входа.
Go — итоги
Итоги раздела «Go» — FAQ и краткие ответы по теме.
Go — чек-лист
Чек-лист раздела «Go» — вопросы для самопроверки.
Go — о разделе
Go (Golang) — синтаксис, goroutines, модули и веб (Gin); маршрут раздела для backend и системного программирования в энциклопедии Вселенная IT.