Документация и ресурсы
За семь уроков мы прошли путь от установки Go до компиляции под любую платформу и экспериментов в Playground. Инструменты готовы, первые программы написаны. Но рано или поздно возникнет вопрос, на который этот курс пока не ответил: “а как работает вот эта функция?” или “какой пакет решает мою задачу?”.
Этот урок — карта. Не нужно запоминать всё сразу — достаточно знать, куда смотреть. Добавьте эту страницу в закладки и возвращайтесь по мере необходимости.
go doc — документация в терминале
Самый быстрый способ узнать, что делает функция — не открывать браузер, а спросить прямо в терминале. Команда go doc встроена в Go и работает без интернета.
Помните doc-комментарии из урока про структуру программы? Те самые // перед объявлениями, которые видны в IDE? go doc извлекает именно их — прямо из исходного кода, установленного на вашем компьютере. Документация всегда соответствует вашей версии Go.
Основы: пакет, функция, метод
Чтобы посмотреть обзор пакета:
$ go doc fmtpackage fmt // import "fmt"
Package fmt implements formatted I/O with functions analogous to C's printfand scanf. The format 'verbs' are derived from C's but are simpler....func Printf(format string, a ...any) (n int, err error)func Println(a ...any) (n int, err error)...Чтобы узнать сигнатуру конкретной функции — добавьте её через точку:
$ go doc fmt.Printlnfunc Println(a ...any) (n int, err error) Println formats using the default formats for its operands and writes to standard output. Spaces are always added between operands and a newline is appended. It returns the number of bytes written and any write error encountered.Можно копать глубже — до метода конкретного типа:
$ go doc json.Decoder.DecodeРегистр не важен: go doc json.decoder и go doc json.Decoder дадут одинаковый результат.
Полезные флаги
| Флаг | Что делает | Пример |
|---|---|---|
-all | Вся документация пакета | go doc -all strings |
-short | Только сигнатуры, без описаний | go doc -short fmt |
-src | Исходный код функции | go doc -src fmt.Println |
:::tip Лайфхак
go doc -src — один из лучших способов учиться. Стандартная библиотека Go (начиная с версии 1.5) написана на самом Go. Хотите увидеть, как инженеры Google реализовали strings.Builder? Просто go doc -src strings.Builder — и эталонный код прямо в терминале.
:::
Когда go doc быстрее браузера
Типичная ситуация: пишете код в VS Code, забыли порядок аргументов у strings.Replace. Открыть терминал (Ctrl+``), набрать go doc strings.Replace` — и через секунду ответ перед глазами. Никаких вкладок, никакого поиска.
pkg.go.dev — документация в браузере
Когда нужно больше контекста — примеры, история версий, зависимости — открывайте pkg.go.dev. Это официальный портал документации Go-пакетов. Он пришёл на смену godoc.org в 2020 году и с тех пор стал главным справочником для всей экосистемы.
Как устроена страница пакета
Каждая страница следует одной и той же структуре:
- Overview — описание пакета (из doc-комментария к
package). - Index — оглавление: все экспортируемые функции, типы, методы. Слева — боковая навигация и поле “Jump To” для быстрого поиска.
- Examples — исполняемые примеры кода. Помните кнопку Run на pkg.go.dev из урока про Playground? Она отправляет код на те же серверы Google — можно потыкать функцию прямо на странице документации, не копируя ничего в редактор.
В заголовке страницы видны ключевые метаданные: путь модуля, версия, дата публикации, лицензия и количество импортов.
Как оценить сторонний пакет
Стандартную библиотеку можно импортировать не глядя — за ней стоит Go Team. А вот со сторонними пакетами стоит быть внимательнее. pkg.go.dev показывает несколько сигналов качества:
- Imported By — сколько других проектов используют этот пакет. Если счёт идёт на тысячи — пакет проверен сообществом.
- License — плашка “Redistributable” означает, что лицензия (MIT, Apache 2.0, BSD) позволяет свободно использовать код.
- Version — наличие
v1.x.xили выше говорит об обратной совместимости API. Автор обещает не ломать ваш код при обновлении.
:::danger Ловушка
Пакеты версии v0.x.x — экспериментальные. Автор может сломать API в любой момент, и ваш код перестанет компилироваться после go get -u. Для боевых проектов выбирайте пакеты с v1+.
:::
Поиск пакетов
В строке поиска pkg.go.dev можно искать по названию, описанию или даже по имени символа — фильтр #Reader io найдёт интерфейс Reader в пакете io. Полный список стандартной библиотеки — на pkg.go.dev/std.
Официальные ресурсы Go Team
Go-команда поддерживает целую экосистему документов. Не нужно читать всё прямо сейчас — но полезно знать, что где лежит.
| Ресурс | URL | Когда пригодится |
|---|---|---|
| Tour of Go | go.dev/tour | Интерактивный учебник в браузере. Отличное дополнение к нашему курсу — можно запустить даже локально: go install golang.org/x/website/cmd/tour@latest |
| Go Blog | go.dev/blog | Статьи от инженеров Go Team. Объясняют “почему” за каждым решением. Анонсы релизов. Выходит 2–4 поста в месяц |
| Go Wiki | go.dev/wiki | Коллективная база знаний. Обязательные страницы: CodeReviewComments (стиль кода) и CommonMistakes (типичные ошибки) |
| Specification | go.dev/ref/spec | Формальная спецификация языка. Не учебник, но удивительно читабельна. Когда нужно точно знать, как работает конструкция |
| Go FAQ | go.dev/doc/faq | ”Почему нет исключений?”, “Почему нет наследования?” — ответы на философские вопросы о Go |
| Go Style Guide | google.github.io/styleguide/go | Современный стандарт написания идиоматичного кода от Google (Style Guide + Decisions + Best Practices) |
:::caution Про Effective Go
Во многих статьях можно встретить совет “обязательно прочитайте Effective Go”. Это легендарный документ 2009 года, заложивший основы стиля Go. Но в январе 2022 года Go Team добавила дисклеймер: документ не обновлялся и обновляться не будет. Он не покрывает модули, дженерики, обработку ошибок через %w и многое другое. Прочитать стоит — но как исторический документ, а не как руководство к действию. Для современных практик используйте Google Go Style Guide.
:::
Блог: статьи, которые стоит прочитать первыми
Несколько постов из Go Blog пригодятся уже скоро:
- “Error Handling and Go” — идиоматичная обработка ошибок (паттерн, который вы будете использовать каждый день).
- “Using Go Modules” (серия из 5 частей) — как работает система зависимостей.
- “Go Proverbs” Роба Пайка — 19 принципов вроде “Clear is better than clever” и “Errors are values”. Не статья, а доклад, но это культурный код Go-сообщества.
Поиска на сайте блога нет — используйте site:go.dev/blog ваш-запрос в Google.
Стандартная библиотека — карта пакетов
Go славится философией “батарейки в комплекте”. Стандартная библиотека покрывает большинство задач бэкенд-разработчика — от HTTP-сервера до работы с JSON. Вот ориентиры:
| Пакет | Для чего | Связь с нашими уроками |
|---|---|---|
fmt | Форматированный ввод-вывод | fmt.Println — с первой программы |
strings | Операции со строками (Contains, Split, Replace) | strings.Join из урока 1.5 |
strconv | Строки ↔ числа (Atoi, Itoa, ParseFloat) | |
os | Взаимодействие с ОС, файлы | os.Args из урока 1.5 |
io | Интерфейсы Reader и Writer | |
net/http | HTTP-клиент и сервер | Шаблон HTTP Server из Playground |
encoding/json | Работа с JSON | |
testing | Тесты и бенчмарки | Запуск тестов в Playground |
errors | Обработка ошибок (Is, As, Join) | |
time | Время, таймеры, форматирование | time.Now() из Playground |
math | Математические функции | |
sort / slices | Сортировка (slices — с Go 1.21) |
Полный список — pkg.go.dev/std. Не нужно заучивать — просто знайте, что прежде чем тянуть стороннюю библиотеку, стоит проверить, нет ли решения в стандартной.
Сообщество
Go-сообщество известно отзывчивостью. Вот где живут Go-разработчики:
Где задавать вопросы
- Stack Overflow (тег [go]) — 170 000+ вопросов. Одна из лучших баз знаний. Помните: ссылка на Playground в вопросе повышает шансы получить ответ.
- Reddit (r/golang) — 200 000+ подписчиков. Обсуждения архитектуры, новых релизов, библиотек.
- Gophers Slack (invite.slack.golangbridge.org) — десятки тысяч участников. Каналы
#beginnersи#general— для быстрых вопросов. - GitHub (github.com/golang/go) — 132 000+ звёзд. Сюда сообщают о багах в Go, здесь обсуждают proposals для новых фич.
Где учиться
- Go by Example (gobyexample.com) — 79+ примеров кода с объяснениями. Отличная шпаргалка по синтаксису.
- Exercism (exercism.org/tracks/go) — 141 упражнение с менторингом. Бесплатно. 151 000+ учеников.
- Awesome Go (github.com/avelino/awesome-go) — курируемый каталог лучших Go-библиотек (130 000+ звёзд).
Книги (актуальные в 2026)
| Книга | Для кого |
|---|---|
| ”Learning Go” 2nd ed. (Jon Bodner, O’Reilly, 2024) | Глубокое погружение для программистов с опытом. Покрывает дженерики |
| ”100 Go Mistakes” (Teiva Harsanyi, Manning) | 100 конкретных ошибок с объяснениями и исправлениями. “Effective Java” для Go |
| ”Let’s Go” (Alex Edwards, 2025) | Практика: строим веб-приложение на стандартной библиотеке |
Подкасты и видео
- Cup o’ Go (cupogo.dev) — еженедельные новости Go-мира.
- Fallthrough (fallthrough.fm) — наследник легендарного Go Time (закрылся в конце 2024 после 340 выпусков).
- GopherCon — крупнейшая конференция Go. Все доклады на YouTube (канал Gopher Academy). GopherCon 2026 пройдёт в Сиэтле (3–6 августа).
- Golang Weekly (golangweekly.com) — еженедельная рассылка. 35 000+ подписчиков. Лучший способ следить за экосистемой.
go help — справка без интернета
Если go doc описывает код, то go help описывает сам инструментарий Go.
$ go helpВыведет список всех команд: build, run, test, mod, install — мы работали с ними в уроке про компиляцию.
Для детальной справки по конкретной команде:
$ go help build # флаги и опции go build$ go help environment # все переменные окружения (GOPATH, GOROOT из урока 1.3)$ go help buildconstraint # теги сборки для кросс-компиляции (урок 1.6)Это ваша страховка на сервере без графического интерфейса или когда интернет недоступен. Всё вкомпилировано в бинарник go — всегда под рукой, всегда соответствует вашей версии.
Итоги
| Нужно… | Инструмент | Команда / URL |
|---|---|---|
| Вспомнить сигнатуру функции | go doc | go doc fmt.Println |
| Узнать флаги компилятора | go help | go help build |
| Найти пакет, прочитать примеры | pkg.go.dev | pkg.go.dev |
| Понять идиоматичный стиль | Go Style Guide | google.github.io/styleguide/go |
| Проверить себя перед code review | Go Wiki | go.dev/wiki/CodeReviewComments |
| Быстро посмотреть синтаксис | Go by Example | gobyexample.com |
| Следить за обновлениями | Golang Weekly | golangweekly.com |
Что дальше?
Вводный блок завершён. За восемь уроков мы разобрались, что такое Go, настроили окружение, написали первые программы, поняли, как работает компиляция, попробовали Playground и теперь знаем, где искать ответы.
Всё, что нужно для старта, — готово. Дальше начинается настоящее программирование.
В следующем блоке “Основы языка” мы погрузимся в синтаксис Go: переменные, типы данных, управляющие конструкции, функции. Подготовьте VS Code — впереди много кода.
Источники
- pkg.go.dev — официальный портал документации Go-пакетов
- go.dev/blog — блог Go Team
- go.dev/doc/effective_go — Effective Go (2009, исторический документ)
- google.github.io/styleguide/go — Google Go Style Guide
- go.dev/tour — интерактивный Tour of Go
- go.dev/ref/spec — спецификация языка Go
- go.dev/wiki — Go Wiki
- go.dev/doc/faq — Go FAQ
- gobyexample.com — Go by Example
- golangweekly.com — еженедельная рассылка Golang Weekly
- 2025 Go Developer Survey Results — результаты опроса разработчиков