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

Язык программирования Go — это проект с открытым исходным кодом, созданный для повышения продуктивности программистов.

Go — выразительный, лаконичный, чистый и эффективный язык. Его механизмы параллелизма позволяют легко писать программы, максимально использующие возможности многоядерных и сетевых машин, а его новая система типов обеспечивает гибкое и модульное построение программ. Go быстро компилируется в машинный код, но при этом предоставляет удобство сборщика мусора и возможности динамического отражения (reflection). Это быстрый, статически типизированный, компилируемый язык, который ощущается как динамически типизированный интерпретируемый язык.

Начало работы

Установка Go

Инструкции по загрузке и установке Go.

Учебник: Начало работы

Краткое руководство «Hello, World» для начала работы. Узнайте немного о коде Go, инструментах, пакетах и модулях.

Учебник: Создание модуля

Краткий учебник, знакомящий с функциями, обработкой ошибок, массивами, отображениями, модульным тестированием и компиляцией.

Учебник: Работа с многомодульными рабочими пространствами

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

Учебник: Разработка RESTful API с Go и Gin

Основы написания RESTful веб-сервиса с использованием Go и веб-фреймворка Gin.

Учебник: Работа с дженериками

Дженерики позволяют объявлять и использовать функции или типы, которые могут работать с любым из набора типов, предоставленных вызывающим кодом.

Учебник: Начало работы с фаззингом

Фаззинг может генерировать входные данные для тестов, чтобы находить крайние случаи и проблемы безопасности, которые могли быть упущены.

Написание веб-приложений

Создание простого веб-приложения.

Как писать код на Go

Этот документ объясняет, как разработать простой набор пакетов Go внутри модуля, а также показывает, как использовать команду go для сборки и тестирования пакетов.

Тур по Go

Интерактивное введение в Go, состоящее из четырёх разделов. Первый раздел охватывает базовый синтаксис и структуры данных; второй — методы и интерфейсы; третий — дженерики; а четвёртый — примитивы параллелизма Go. Каждый раздел завершается несколькими упражнениями, чтобы вы могли закрепить изученное. Вы можете пройти тур онлайн или установить его локально с помощью:

        $ go install golang.org/x/website/tour@latest
        
    

Это установит бинарный файл tour в директорию bin вашего GOPATH.

Использование и понимание Go

Эффективный Go

Документ, содержащий советы по написанию чистого, идиоматического кода на Go. Обязателен к прочтению для всех начинающих программистов на Go. Он дополняет «Тур по Go» и спецификацию языка, которые рекомендуется изучить в первую очередь.

Часто задаваемые вопросы (FAQ)

Ответы на распространённые вопросы о Go.

Плагины для редакторов и IDE

Документ, обобщающий наиболее распространённые плагины и среды разработки (IDE), поддерживающие Go.

Диагностика

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

Руководство по сборщику мусора Go

Документ, описывающий, как Go управляет памятью и как эффективно использовать эти возможности.

Управление зависимостями

Когда ваш код использует внешние пакеты, эти пакеты (распространяемые как модули) становятся зависимостями.

Фаззинг

Основная документация по фаззингу в Go.

Покрытие тестами для Go-приложений

Основная документация по тестированию покрытия кода в приложениях на Go.

Оптимизация, основанная на профилировании

Основная документация по оптимизации Go-приложений, основанной на профилировании (PGO).

Ссылки

Документация по пакетам

Документация по стандартной библиотеке Go.

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

Документация по инструментам Go.

Спецификация языка

Официальная спецификация языка Go.

Справочник по модулям Go

Подробная документация по системе управления зависимостями Go.

Справка по файлу go.mod

Справка по директивам, которые могут содержаться в файле go.mod.

Модель памяти Go

Документ, описывающий условия, при которых чтение переменной в одной горутине гарантированно наблюдает значения, записанные в эту же переменную в другой горутине.

Руководство по внесению вкладов

Как участвовать в развитии Go.

История релизов

Краткий обзор изменений между версиями Go.

Доступ к базам данных

Учебник: Доступ к реляционной базе данных

Основы доступа к реляционной базе данных с использованием Go и пакета database/sql из стандартной библиотеки.

Доступ к реляционным базам данных

Обзор возможностей Go для работы с данными.

Открытие дескриптора базы данных

Дескриптор базы данных используется для выполнения операций с базой. После открытия дескриптора с параметрами соединения он представляет собой пул соединений, управляемый от вашего имени.

Выполнение SQL-операций, не возвращающих данные

Для операций SQL, которые могут изменять базу данных, включая INSERT, UPDATE и DELETE, используются методы Exec.

Запрос данных

Для операторов SELECT, возвращающих данные, используются методы Query или QueryRow.

Использование подготовленных операторов

Подготовленные операторы для повторного использования помогают ускорить выполнение кода, избегая необходимости каждый раз заново создавать оператор.

Выполнение транзакций

sql.Tx предоставляет методы для работы с транзакциями, включая Commit и Rollback, а также общие методы для операций с базой данных.

Отмена выполняющихся операций

Используя context.Context, можно принудительно остановить выполнение функций и сервисов приложения и вернуть ошибку, если их обработка больше не требуется.

Управление соединениями

В некоторых случаях может потребоваться тонкая настройка параметров пула соединений или явная работа с соединениями.

Предотвращение SQL-инъекций

Риск SQL-инъекции можно снизить, передавая значения параметров SQL как аргументы функций пакета sql.

Разработка модулей

Разработка и публикация модулей

Вы можете объединять связанные пакеты в модули и публиковать их для использования другими разработчиками. В этом разделе представлен обзор разработки и публикации модулей.

Процесс выпуска и версионирования модулей

При разработке модулей для других разработчиков можно следовать рабочему процессу, который обеспечивает надежный и согласованный опыт использования модуля. Этот раздел описывает основные шаги такого процесса.

Управление исходным кодом модуля

Следуя соглашениям о структуре репозитория, описанным в этом разделе, вы можете сделать свои модули удобнее для использования другими разработчиками.

Организация Go-модуля

Как правильно организовать файлы и каталоги в типичном проекте на Go? В этом разделе обсуждаются общие варианты структуры проекта в зависимости от типа модуля.

Разработка крупного обновления версии

Крупное обновление версии может быть очень разрушительным для пользователей модуля, так как включает несовместимые изменения и представляет собой новый модуль. Подробнее об этом в разделе.

Публикация модуля

Чтобы сделать модуль доступным для других разработчиков, его публикуют, чтобы инструменты Go могли его обнаружить. После публикации разработчики смогут разрешать зависимости от модуля с помощью команд, таких как go get.

Нумерация версий модуля

Разработчик модуля использует каждую часть номера версии для обозначения стабильности и обратной совместимости. Для каждого нового выпуска номер версии модуля отражает характер изменений по сравнению с предыдущим выпуском.

Доклады

Видеотур по Go

Три вещи, которые делают Go быстрым, удобным и продуктивным: интерфейсы, рефлексия и конкуренция. В демонстрации создаётся простой веб-краулер.

Код, который растёт элегантно

Одна из ключевых целей Go — адаптивность кода: легко начинать с простой конструкции и постепенно её расширять. Эндрю Герранд в этом докладе описывает сервер "чат-рулетка", который соединяет пары TCP-подключений, и показывает, как с помощью конкуренции, интерфейсов и стандартной библиотеки Go расширить функциональность веб-интерфейсом и другими возможностями.

Шаблоны конкурентности Go

Конкурентность — ключ к проектированию высокопроизводительных сетевых сервисов. Примитивы Go (goroutines и каналы) позволяют просто и эффективно выражать параллельное выполнение. В докладе показывается, как решать сложные задачи конкурентности с помощью простого кода на Go.

Продвинутые шаблоны конкурентности Go

Этот доклад углубляется в примитивы конкурентности Go, расширяя материал доклада "Шаблоны конкурентности Go".

Больше

Смотрите сайт Go Talks и страницу в вики для большего количества докладов.

Codewalks

Пошаговые экскурсии по программам на Go.

Язык

Пакеты

Модули

Инструменты

Вики

Go Wiki, поддерживаемая сообществом Go, содержит статьи о языке Go, инструментах и других ресурсах.

Смотрите страницу Learn на Wiki для дополнительных материалов по изучению Go.

Документация на других языках

Смотрите страницу NonEnglish на Wiki для локализованной документации.
GoRu.dev Golang на русском

На сайте представлена адаптированная под русский язык документация языка программирования Golang