Go (его часто называют golang) — язык программирования, который придумали в Google Роб Пайк, Кен Томпсон и Роберт Гризмер, а развивает открытое сообщество The Go Authors. Скачивая Go, вы устанавливаете не программу с окнами и кнопками, а набор инструментов: компилятор, стандартную библиотеку и одну команду go, которая собирает, запускает и проверяет код. Писать сам код удобнее в редакторе — например, в Visual Studio Code с расширением для Go.
Главное отличие Go от соседей — осознанная простота. В языке мало конструкций: его синтаксис можно разобрать за выходные, а читать чужой код легко даже через годы. За это приходится платить: привычных для других языков классов, наследования и исключений здесь нет, зато есть очень быстрая сборка и готовый результат в виде одного исполняемого файла, которому не нужны библиотеки на чужом компьютере. Именно из-за такой сборки на Go написаны Docker, Kubernetes и десятки утилит, которые администраторы просто кладут на сервер и запускают.
Что умеет Go
- Сборка в один файл — команда go build превращает проект в самостоятельный exe для Windows или бинарник для Linux и macOS. Ни интерпретатора, ни виртуальной машины, ни пакета библиотек на целевой машине ставить не нужно.
- Горутины — отдельная «ниточка» работы запускается словом go перед вызовом функции. Горутины очень дёшевы: их может быть десятки тысяч одновременно, и программа продолжает отвечать на запросы, пока одна часть ждёт ответа от сети или диска.
- Каналы — безопасный способ передать данные между горутинами, не расставляя вручную блокировки. Это и есть та самая «простая многопоточность», за которую Go выбирают для сетевых служб.
- Богатая стандартная библиотека — веб-сервер, HTTP-клиент, работа с JSON, шифрование и архивы входят в комплект: небольшую службу можно написать без сторонних библиотек.
- Модули — зависимости описываются в файле go.mod с точными версиями, а файл go.sum хранит их контрольные суммы. Сборка повторяема: через год проект соберётся из тех же версий, что и сегодня.
- Единый стиль кода — команда gofmt переформатирует файл по общим правилам. В Go-проектах не бывает спора об отступах и переносах: стиль один для всех.
- Встроенные тесты — go test находит тесты в файлах с окончанием _test.go, запускает их, считает покрытие и умеет измерять скорость. Отдельные библиотеки для этого не требуются.
- Кросс-компиляция — с Windows можно собрать программу для Linux-сервера или для Mac, задав переменные целевой системы и архитектуры. Виртуальная машина и чужой компьютер для этого не нужны.
- Сборщик мусора — память освобождается сама, но пауза на уборку очень короткая, поэтому Go подходит для служб, которые должны отвечать быстро и ровно.
- Инструменты проверки — go vet ищет подозрительные места, а детектор гонок показывает, где две горутины одновременно трогают одни и те же данные.
Язык обновляется примерно дважды в год, и разработчики держат обещание совместимости: код, написанный под ранние версии Go 1, собирается и новыми выпусками. Обновление компилятора обычно не требует переписывать программу.
Кому подходит
- Backend-разработчикам, которые пишут API и микросервисы: веб-сервер в стандартной библиотеке и горутины закрывают большую часть задач.
- Системным администраторам и DevOps-инженерам: удобно писать утилиты, которые нужно просто скопировать на сервер без установки окружения.
- Командам, где часто меняются люди: простой язык и единый стиль снижают время на вход в чужой код.
- Тем, кто изучает программирование вторым языком и хочет понять, как работают сети и параллельные вычисления.
Для чего Go подходит хуже: для настольных программ с окнами, для игр и для анализа данных, где у Python несравнимо больше инструментов. Для сайтов на обычном хостинге он тоже неудобен: ему нужен запущенный процесс, а не папка со скриптами.
Плюсы
- Простой синтаксис, язык реально выучить быстро
- Сборка в один файл без зависимостей
- Быстрая компиляция даже на больших проектах
- Горутины и каналы вместо ручной работы с потоками
- Форматирование, тесты и проверки встроены в язык
Минусы
- Нет привычных классов и наследования — архитектуру приходится строить иначе
- Обработка ошибок многословна: проверка после почти каждого вызова
- Мало библиотек для настольного интерфейса и игр
- Нет русской документации в комплекте, всё на английском
Сколько стоит
Go полностью бесплатен, в том числе для коммерческих проектов: компилятор, стандартная библиотека и инструменты распространяются с открытым кодом по лицензии BSD. Платить не нужно ни за язык, ни за публикацию своих библиотек. Деньги могут понадобиться только на то, что рядом: платная среда разработки GoLand, если не хватает бесплатного редактора, и хостинг или сервер, где будет работать ваша программа.
Как установить
- Откройте официальный сайт go.dev и перейдите в раздел загрузок. Сайт сам предложит версию для вашей системы: установщик MSI для Windows, PKG для macOS или архив для Linux.
- Запустите установщик и согласитесь с папкой по умолчанию. Он сам прописывает путь к команде go, поэтому вручную настраивать переменные среды не придётся.
- Откройте терминал — в Windows это PowerShell — и введите go version. Если показался номер версии, Go установлен правильно.
- Поставьте редактор кода: подойдёт бесплатный Visual Studio Code с официальным расширением для Go. Оно само предложит догрузить вспомогательные инструменты для подсказок и подсветки ошибок.
- Создайте папку для проекта, выполните в ней go mod init с именем вашего модуля и напишите первый файл. Команда go run запустит его сразу, без отдельной сборки.
Частые вопросы
Чем Go отличается от Python?
Python — интерпретируемый язык: нужен установленный Python, чтобы запустить скрипт. Go компилируется в готовый файл и работает заметно быстрее, особенно на сетевых задачах. Зато у Python намного больше библиотек для анализа данных и машинного обучения, и писать короткие скрипты на нём быстрее.
Нужен ли отдельный редактор или среда разработки?
Формально нет: хватит блокнота и команды go. На практике почти все работают в Visual Studio Code с расширением для Go — оно показывает ошибки до запуска и подсказывает названия функций. Есть и платная среда GoLand от JetBrains.
Работает ли Go из России?
Да. Сайт go.dev открывается, установщик скачивается, компилятор работает без регистрации и проверки лицензий. Сторонние библиотеки загружаются из интернета при сборке, и если какой-то источник недоступен, в настройках Go указывают другой прокси модулей или поднимают собственный кэш.
Есть ли русский язык?
Нет. Сообщения компилятора, официальная документация и обучающий тур — на английском. На русском есть книги и курсы сообщества, но они не входят в комплект.
Подойдёт ли Go как первый язык программирования?
Подойдёт, если интересны серверы и утилиты: синтаксис простой, а лишних понятий мало. Если хочется быстро увидеть результат в виде графиков или сайта, первым языком обычно берут Python или JavaScript.
