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


🅰️ A

API (Application Programming Interface)

Интерфейс программирования приложений — набор функций и методов для взаимодействия между программными компонентами. В Go часто используется для создания REST API с помощью пакета net/http.

Array (Массив)

Фиксированная последовательность элементов одного типа. В Go размер массива является частью его типа: [5]int и [10]int — разные типы.


🅱️ B

Buffer

Временное хранилище данных в памяти. В Go используется bytes.Buffer для эффективной работы со строками и байтовыми данными.

Build (Сборка)

Процесс компиляции Go кода в исполняемый файл. Команда go build создает исполняемый файл из Go пакетов.

Benchmark (Бенчмарк)

Тест производительности кода. В Go создается функцией с префиксом Benchmark и параметром *testing.B.


🅲 C

Channel (Канал)

Механизм связи между горутинами в Go. Каналы позволяют горутинам безопасно передавать данные друг другу. Создаются с помощью make(chan Type).

Closure (Замыкание)

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

Concurrency (Конкурентность)

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

Context

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


🅳 D

Defer

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

Duck Typing

Подход в Go, где тип определяется поведением, а не декларацией. Если тип реализует все методы интерфейса, он автоматически его удовлетворяет.


🅴 E

Embedded Type (Встроенный тип)

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

Error Handling (Обработка ошибок)

Подход Go к обработке ошибок через возврат значения типа error из функций вместо использования исключений.


🅵 F

Function (Функция)

Блок кода, который выполняет определенную задачу. В Go функции являются типами первого класса и могут быть переданы как аргументы.

First-class Function (Функция первого класса)

В Go функции могут быть присвоены переменным, переданы как аргументы и возвращены из других функций.


🅶 G

Go Module (Go Модуль)

Система управления зависимостями в Go. Модуль — это коллекция пакетов, версионируемая как единое целое.

Garbage Collector (Сборщик мусора)

Автоматическое управление памятью в Go. Сборщик мусора освобождает память, занятую объектами, на которые больше нет ссылок.

Goroutine (Горутина)

Легковесный поток выполнения в Go. Горутины управляются Go runtime и позволяют легко создавать конкурентные программы.

GOPATH

Переменная окружения, определяющая рабочее пространство Go (до введения модулей). Содержит пути к исходному коду, пакетам и исполняемым файлам.

GOOS и GOARCH

Переменные окружения для кросс-компиляции. GOOS определяет целевую операционную систему, GOARCH — архитектуру процессора.


🅷 H

HTTP Handler

Функция в Go, обрабатывающая HTTP запросы. Должна иметь сигнатуру func(w http.ResponseWriter, r *http.Request).

Hash Map

Структура данных для хранения пар ключ-значение. В Go реализована как встроенный тип map.


🅸 I

Interface (Интерфейс)

Тип в Go, определяющий набор методов. Любой тип, реализующий все методы интерфейса, автоматически его удовлетворяет.

Import Path

Строка, идентифицирующая пакет для импорта. Обычно это URL репозитория или стандартное имя пакета.


🅹 J

JSON (JavaScript Object Notation)

Формат обмена данными. Go предоставляет пакет encoding/json для работы с JSON данными.


🅺 K

Keyword (Ключевое слово)

Зарезервированное слово в Go, которое нельзя использовать как идентификатор. В Go 25 ключевых слов: break, default, func, interface, select и др.


🅻 L

Literal (Литерал)

Значение, записанное непосредственно в коде. Примеры: 42 (числовой литерал), "hello" (строковый литерал).

Lock (Блокировка)

Механизм синхронизации для защиты разделяемых ресурсов. В Go доступны через пакет sync (Mutex, RWMutex).


🅼 M

Map (Карта)

Встроенный тип Go для хранения пар ключ-значение. Аналог словаря или хэш-таблицы в других языках.

Method (Метод)

Функция с receiver’ом. Методы позволяют типам иметь поведение, связанное с ними.

Middleware

Промежуточное ПО для обработки HTTP запросов. Функция, которая оборачивает другой handler.

Mutex (Мьютекс)

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


🅽 N

nil

Нулевое значение в Go для указателей, интерфейсов, каналов, слайсов, map и функций.


🅾️ O

ORM (Object-Relational Mapping)

Техника связывания объектов с записями в базе данных. Популярная ORM для Go — GORM.


🅿️ P

Package (Пакет)

Основная единица организации кода в Go. Пакет — это директория с .go файлами, начинающимися с одного package declaration.

Panic

Механизм остановки нормального выполнения программы при критической ошибке. Может быть обработан с помощью recover.

Pointer (Указатель)

Переменная, хранящая адрес в памяти другой переменной. В Go обозначается символом *.

Polymorphism (Полиморфизм)

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


🅿️ Q

Query (Запрос)

В контексте баз данных — команда для получения или изменения данных. Go предоставляет пакет database/sql для работы с SQL запросами.


🆁 R

Race Condition (Состояние гонки)

Ошибка, возникающая когда несколько горутин одновременно обращаются к разделяемому ресурсу. Go предоставляет детектор гонок: go run -race.

Receiver

Параметр метода в Go, указывающий к какому типу принадлежит метод. Может быть value receiver или pointer receiver.

Reflection (Рефлексия)

Способность программы исследовать свою структуру во время выполнения. В Go доступна через пакет reflect.

REST API

Архитектурный стиль для создания веб-служб. Go часто используется для создания RESTful API.


🆂 S

Slice (Слайс)

Динамический массив в Go. Слайсы построены поверх массивов и автоматически изменяют размер.

Struct (Структура)

Пользовательский тип, объединяющий поля разных типов. Основа для создания сложных типов данных в Go.

Select Statement

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

Synchronization (Синхронизация)

Координация выполнения горутин для предотвращения race conditions. В Go доступна через пакет sync.


🆃 T

Type Assertion

Операция извлечения конкретного типа из интерфейса. Синтаксис: value, ok := interface.(Type).

Type Switch

Конструкция switch для работы с типами в интерфейсах. Позволяет выполнить разные действия в зависимости от типа.

Testing (Тестирование)

Процесс проверки корректности кода. Go предоставляет встроенный пакет testing и команду go test.


🆄 U

Unit Test (Юнит-тест)

Тест отдельного компонента (функции, метода). В Go создается функцией с префиксом Test и параметром *testing.T.

UTF-8

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


🆅 V

Variable (Переменная)

Именованное хранилище данных. В Go переменные могут быть объявлены с помощью var или короткой записи :=.

Value Receiver

Метод, получающий копию значения. Изменения внутри метода не влияют на оригинал.

Vendor

Директория для хранения зависимостей внутри проекта. Использовалась до введения Go модулей.


🆆 W

WaitGroup

Примитив синхронизации из пакета sync для ожидания завершения группы горутин.

Web Framework

Набор инструментов для создания веб-приложений. Популярные Go фреймворки: Gin, Echo, Fiber.


🆇 X

XML

Формат разметки данных. Go предоставляет пакет encoding/xml для работы с XML.


🆈 Y

YAML

Формат сериализации данных. Часто используется для конфигурационных файлов в Go приложениях.


🆉 Z

Zero Value (Нулевое значение)

Значение по умолчанию для каждого типа в Go. Например: 0 для int, "" для string, nil для указателей.


📚 Полезные ссылки

Официальная документация: golang.org/doc/
Спецификация языка: golang.org/ref/spec
Эффективный Go: golang.org/doc/effective_go
FAQ по Go: golang.org/doc/faq


Не нашли нужный термин? Предложите добавить его в глоссарий!