Перейти к содержимому

Документация и ресурсы

За семь уроков мы прошли путь от установки Go до компиляции под любую платформу и экспериментов в Playground. Инструменты готовы, первые программы написаны. Но рано или поздно возникнет вопрос, на который этот курс пока не ответил: “а как работает вот эта функция?” или “какой пакет решает мою задачу?”.

Этот урок — карта. Не нужно запоминать всё сразу — достаточно знать, куда смотреть. Добавьте эту страницу в закладки и возвращайтесь по мере необходимости.


go doc — документация в терминале

Самый быстрый способ узнать, что делает функция — не открывать браузер, а спросить прямо в терминале. Команда go doc встроена в Go и работает без интернета.

Помните doc-комментарии из урока про структуру программы? Те самые // перед объявлениями, которые видны в IDE? go doc извлекает именно их — прямо из исходного кода, установленного на вашем компьютере. Документация всегда соответствует вашей версии Go.

Основы: пакет, функция, метод

Чтобы посмотреть обзор пакета:

Окно терминала
$ go doc fmt
package fmt // import "fmt"
Package fmt implements formatted I/O with functions analogous to C's printf
and 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.Println
func 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 Gogo.dev/tourИнтерактивный учебник в браузере. Отличное дополнение к нашему курсу — можно запустить даже локально: go install golang.org/x/website/cmd/tour@latest
Go Bloggo.dev/blogСтатьи от инженеров Go Team. Объясняют “почему” за каждым решением. Анонсы релизов. Выходит 2–4 поста в месяц
Go Wikigo.dev/wikiКоллективная база знаний. Обязательные страницы: CodeReviewComments (стиль кода) и CommonMistakes (типичные ошибки)
Specificationgo.dev/ref/specФормальная спецификация языка. Не учебник, но удивительно читабельна. Когда нужно точно знать, как работает конструкция
Go FAQgo.dev/doc/faq”Почему нет исключений?”, “Почему нет наследования?” — ответы на философские вопросы о Go
Go Style Guidegoogle.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/httpHTTP-клиент и серверШаблон 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 docgo doc fmt.Println
Узнать флаги компилятораgo helpgo help build
Найти пакет, прочитать примерыpkg.go.devpkg.go.dev
Понять идиоматичный стильGo Style Guidegoogle.github.io/styleguide/go
Проверить себя перед code reviewGo Wikigo.dev/wiki/CodeReviewComments
Быстро посмотреть синтаксисGo by Examplegobyexample.com
Следить за обновлениямиGolang Weeklygolangweekly.com

Что дальше?

Вводный блок завершён. За восемь уроков мы разобрались, что такое Go, настроили окружение, написали первые программы, поняли, как работает компиляция, попробовали Playground и теперь знаем, где искать ответы.

Всё, что нужно для старта, — готово. Дальше начинается настоящее программирование.

В следующем блоке “Основы языка” мы погрузимся в синтаксис Go: переменные, типы данных, управляющие конструкции, функции. Подготовьте VS Code — впереди много кода.


Источники