К содержанию

Wiki · Технологии разработки

Go (Golang)

Go (Golang) – это компилируемый язык программирования с открытым кодом, который создали в Google. На нём пишут серверы под большой нагрузкой, API и инфраструктурные инструменты: например, на Go написаны Docker и Kubernetes.

Сначала про название. Язык называется Go, а «golang» прижилось из-за первого адреса сайта проекта, golang.org: короткое слово «go» плохо ищется. Среди частых запросов со словом «golang» в Вордстате есть «golang вакансии» и «стажировка golang»: на рынке труда язык заметен. Заказчик же сталкивается с Go в другой момент: подрядчик предлагает переписать тормозящий сервис или сделать бэкенд под нагрузку.

Как Go появился в Google и как часто выходят версии

Язык придумали в Google Роберт Гризмер, Роб Пайк и Кен Томпсон в 2007 году. В ноябре 2009 года проект открыли, а 28 марта 2012 года вышла стабильная версия Go 1. Проектом по-прежнему руководит Google, код открыт по лицензии BSD.

Новая версия выходит раз в полгода, в феврале и августе. Каждую поддерживают, пока не выйдут две следующие, то есть около года. На октябрь 2026 года актуальна Go 1.27 из августа 2026 года, поддерживается и 1.26, а 1.25 и более ранние уже без исправлений.

Для бизнеса важнее другое обещание: программы, написанные по спецификации Go 1, должны собираться и работать без изменений на всех новых версиях. Поэтому обновление Go обычно сводится к пересборке и прогону тестов, а не к переписыванию кода. Годами собирать сервис старой версией при этом не стоит: примерно через год она перестаёт получать исправления безопасности.

Компиляция, горутины и gofmt: на чём держится Go

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

Главная особенность в параллельной работе. Слово go перед функцией запускает её в горутине, лёгком потоке, которым управляет сам Go. Условный пример: сервис проверяет доступность сотни сайтов одновременно, а не по очереди.

for _, url := range urls {
    go check(url) // каждая проверка идёт параллельно
}

Язык намеренно сделан простым: конструкций немного, а стандартная утилита gofmt приводит код к одному стилю. Код разных разработчиков выглядит похоже, и новому человеку в нём проще разобраться.

Схема: программу на Go компилируют в исполняемый файл, а код на Python и PHP выполняет интерпретатор на сервере
Как программа на Go попадает на сервер

Какие сервисы пишут на Go

  • API и бэкенд, к которым одновременно приходят тысячи запросов.
  • Инфраструктура: контейнеры, оркестрация, мониторинг. На Go написаны Docker и Kubernetes.
  • Микросервисы в облаке: по данным сайта Go, такие серверы быстро запускаются и экономно расходуют процессор и память.
  • Сетевые утилиты, прокси, обработчики очередей и фоновые задачи.

Внутри Google на Go работают сервер загрузок dl.google.com и часть облачной инфраструктуры. В кейсах на сайте языка есть PayPal, Cloudflare, Dropbox, Netflix, Uber и Twitch.

Когда Go выигрывает у Python и PHP, а когда нет

ЗадачаЧто подходитПочему
Сервис с большим числом одновременных запросовGoМашинный код и горутины
Утилита или агент на сервереGoОдин файл без зависимостей на сервере
API для приложения, интеграции, ИИPython (FastAPI)Быстрее писать, больше библиотек для данных
Сайт компании, магазин с обменом с 1СPHP и CMSКаталог, корзина и админка готовы

У Go нет готовых CMS и админок уровня 1С-Битрикс. Сайт с контентом на нём пишут с нуля, и для типовых задач это лишняя работа. Визитка или магазин на Go ради скорости обернётся отдельной разработкой админки и редактора контента.

Когда переписывать сервис на Go оправдано

Переписывать сервис на Go стоит, когда узкое место измерено и это сам код: сервис упирается в процессор или число соединений. Если медленно работают запросы к базе или страницы тянут тяжёлые картинки, смена языка не поможет. С чего начинать поиск причин, читайте в статье Скорость сайта.

Go-сервису не нужен PHP или Python на сервере: его запускают на VPS или упаковывают в контейнер. Про варианты размещения читайте в статье Хостинг.

Заранее подумайте, кто будет поддерживать сервис, если команда сменится. При передаче проекта забирайте репозиторий с файлом зависимостей go.mod, тесты и инструкцию по сборке. Если сервис работает через API, нужно и его описание.

Сравнение: в каких случаях язык Go избыточен для проекта, а в каких оправдан
Когда Go оправдан, а когда избыточен

Признаки Go-сервиса: файлы .go, go.mod и один исполняемый файл

Снаружи по сайту это почти не видно, поэтому смотрите на проект изнутри. В репозитории лежат файлы с расширением .go и файл go.mod, где указаны модули и версия языка. На сервере сервис запущен как исполняемый файл, без интерпретатора рядом. Если доступа нет, спросите подрядчика, какой версией Go собран проект и когда его последний раз пересобирали.

Если проект уже работает на Go, берём его на доработку и техническую поддержку. Перед тем как переписывать сервис, узкие места ищут нагрузочным тестированием.

Название, версии, скорость и выбор Go для проекта

Go и Golang: почему у языка два названия?

Это один и тот же язык, официально он называется Go. Слово golang пошло от первого адреса сайта, golang.org: короткое «go» почти не ищется, и вариант прижился в поиске и вакансиях. Сейчас сайт проекта живёт на go.dev.

Какая версия Go актуальна в 2026 году?

В октябре 2026 года свежая версия Go 1.27, она вышла в августе. Исправления ещё получает 1.26, а у 1.25 и всех предыдущих поддержка закончилась. Следующий выпуск по обычному графику ожидается в феврале 2027 года.

Чем Go отличается от Python при выборе бэкенда?

Go компилируется в машинный код и изначально рассчитан на параллельную работу, поэтому его берут для сервисов под большой нагрузкой. На Python писать быстрее, у него больше библиотек для данных и ИИ, а для API есть FastAPI. Бывает и так: основная логика остаётся на Python, а самый нагруженный участок выносят в отдельный сервис на Go.

Почему сайт компании редко делают на Go?

Для Go нет готовых CMS с каталогом, корзиной и редактором контента, всё пришлось бы писать с нуля. А скорость языка сайту услуг почти ничего не даёт: страницы тормозят из-за базы, картинок и скриптов. Такой сайт быстрее и дешевле запустить на PHP и CMS.

За счёт чего Go работает быстро и где это не поможет?

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

Чем горутина отличается от обычного потока?

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

Как обновлять Go-проект без переписывания кода?

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

Что забрать у подрядчика при передаче Go-сервиса?

Репозиторий с файлом go.mod, тесты, инструкцию по сборке и запуску, а если сервис отдаёт данные другим системам, ещё и описание API. Отдельно запишите, какой версией Go проект собирали в последний раз и где он запущен: на VPS или в контейнере.

Где запускают сервис на Go?

На VPS, в облаке или в контейнере Docker. На сервер кладут один исполняемый файл, ни PHP, ни Python для него не нужны. Обновление сводится к замене этого файла и перезапуску.

Какие компании пишут на Go?

В первую очередь сам Google: на этом языке у него сделаны, например, раздача файлов с dl.google.com и часть облака. В кейсах на go.dev есть Uber, Netflix, PayPal, Dropbox, Cloudflare и Twitch, а ещё на Go написаны Docker и Kubernetes.

Документация, блог и кейсы проекта Go

  • Go: официальный FAQ
  • Go: история выпусков и политика поддержки
  • Go: обещание совместимости Go 1
  • Go: блог, анонс версии Go 1
  • Go: решения для облачных сервисов и кейсы компаний
  • Документация Docker: обзор платформы

Остались вопросы по теме «Go (Golang)»?

Напишите нам в Telegram или MAX. Ответит специалист, который отвечает за эту тему, или руководитель проектов в рабочее время.

Сергей ЧерняковОтвечает по темеСергей ЧерняковWeb-разработчик

Услуги

Услуги по теме

Все услуги →

Посчитайте стоимость проекта за 2 минуты

Калькулятор соберёт смету по нашим тарифам: сайт, дизайн, интеграции и поддержка.