О разделе
Go — компилируемый язык с простым синтаксисом, встроенной конкурентностью (goroutine, channel) и быстрой сборкой бинарника. Часто выбирают для CLI, микросервисов, DevOps-утилит и высоконагруженного backend.
Сначала: Что такое код и как он работает — общая база — код, блок кода, компиляция и интерпретация, исходный, байт- и машинный код; в этом разделе — синтаксис и особенности языка. Память и GC — сравнение Java, Python и Go, практика — основы Go.
Go реализует легковесные потоки (горутины) и обмен через каналы — вариант передачи сообщений.
Теория — процессы и потоки; практика — синтаксис и конкурентность, паттерны.
Горутины и каналы в синтаксисе Go сначала разбираются псевдокодом, затем — на Go.
Что в разделе
Статьи по синтаксису, модулям (go mod), ошибкам, тестам и вебу (Gin). Модель ошибок без try/catch — сначала теория, затем Обработка ошибок в Go. Ниже — короткий маршрут; на старте не смешивайте с Java или Python — путаются модели ошибок и работа с пакетами.
С чего начать
| Шаг | Материал | Зачем |
|---|---|---|
| 1 | Основы языка | Типы, main, инструменты |
| 1a | GoLand — IDE для разработки на Go | Установка, интерфейс, отладка (рекомендуется перед первой программой) |
| 1b | package main и func main() | Исполняемый пакет vs библиотека |
| 2 | Первая программа | go run, структура проекта |
| 3 | Gin | HTTP API после базы |
| 4 | REST обзор | Контракты и маршруты |
| — | СУБД из Go | PostgreSQL, MySQL, SQLite, SQL Server |
Углублённый маршрут (после базы)
Сквозной путь от CLI к внутренним RPC:
| Шаг | Материал | Зачем |
|---|---|---|
| 1 | GoEmailVerifier — практикум | CLI: DNS, SMTP, flag, тесты |
| 1a | Практикум GoHTMLParser | CLI — HTTP, парсинг HTML, internal/, тесты |
| 2 | CLI на cobra и viper | Подкоманды, конфиг, embed |
| 3 | Веб на stdlib | net/http до фреймворков |
| 4 | Gin | REST API |
| 5 | gRPC в Go | Protobuf между сервисами |
| 6 | Дженерики | Обобщённые алгоритмы |
| 7 | Профилирование и fuzz | pprof, trace, benchstat |
| 8 | WebSocket | Push и live-данные |
| 9 | TCP и UNIX-сокеты | Транспорт ниже HTTP |
Зачем этот раздел
Подборка по Go в энциклопедии: синтаксис, первая программа и смежные темы. Выберите один язык для старта, пройдите маршрут до первой рабочей программы — затем переходите к следующему языку или стеку.
С чего начать
| Шаг | Материал | Зачем |
|---|---|---|
| 1 | Первая программа | Запуск и синтаксис |
| 2 | Gin | Углубление |
| 3 | REST обзор | Углубление |
Частые ошибки при старте
| Ошибка | Что делать |
|---|---|
| Прыжки между языками | Закройте одну "первую программу", потом сравнивайте |
| Код без запуска | Выполните пример локально |
| Сразу большой фреймворк | Сначала база раздела, потом REST/UI |
Что попробовать
- Шаг 1 из таблицы.
- Три непонятных термина — найдите статьи в оглавлении раздела.
- Другой язык — только после своей рабочей первой программы.
Основы языка 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.
Базовый разбор HTTP и HTTPS находится в отдельной статье — HTTP как основа веб-интеграций.
В подборках
Статья входит в тематические подборки и блок "С чего начать?" на главной. Соседние шаги того же маршрута:
Бэкенд и серверная разработка — Kotlin — о разделе, Ruby — о разделе, Smalltalk — о разделе, Groovy — о разделе, PHP — о разделе, Rust — о разделе.