Введение в Go

Что такое Go?
Go (или Golang) — это современный язык программирования, разработанный в компании Google в 2007 году. Представьте, что вы строите огромный замок из кубиков: старые языки иногда заставляют вас бороться с неустойчивыми конструкциями, медленной сборкой и проблемами при работе нескольких строителей одновременно. Go создан именно для таких "крупных проектов" — он упрощает масштабирование, делает код эффективным и отлично справляется с многопоточностью (когда несколько задач выполняются параллельно, как в многозадачном смартфоне).
Go используется в реальных проектах: от серверов Netflix и Uber до инструментов Docker и Kubernetes. Если вы новичок, не пугайтесь — Go прост, как Python, но быстр, как C++!
Пример применения Go в проектах

Преимущества
Давайте разберём, почему Go стоит изучать. Вот ключевые плюсы, которые делают его идеальным для начинающих и профессионалов:
- Простота: Синтаксис минималистичный — нет лишних скобок или сложных конструкций
- Высокая производительность: Go компилируется в машинный код, так что программы запускаются молниеносно. Сборка занимает секунды, даже для больших проектов!
- Конкурентность: Встроенные "горутины" (goroutines) позволяют легко писать параллельный код. Представьте: вместо того чтобы ждать, пока кофе варится, вы одновременно моете чашку — Go делает это просто
- Кроссплатформенность: Пиши код на Mac, запускай на Windows или Linux без изменений. Идеально для команд на разных ОС
- Сборка мусора: Go сам управляет памятью, освобождая вас от ручной работы (как в Java), но без тормозов
- Богатая стандартная библиотека: Всё для сетей, JSON, HTTP уже встроено — не нужно тянуть кучу пакетов
Интересный факт: Go создали Роберт Гризмер, Роб Пайк и Кен Томпсон — те же люди, что работали над C и Unix. Они взяли лучшее из старых языков и избавились от худшего.
Установка
Мы пройдём шаг за шагом для установки Go на разных ОС!
Windows
- Перейдите на официальный сайт и скачайте
.msi-файл для вашей версии (обычно 64-бит). - Запустите файл и следуйте wizard'у — просто жмите "Далее".
- Добавьте Go в PATH (обычно это делается автоматически, но если нет: правой кнопкой на "Этот компьютер" → Свойства → Дополнительные параметры системы → Переменные среды → Path → Добавить
C:\Go\binили другой путь, куда вы установили Go). - Проверьте в командной строке или powershell:
go version. Должно вывести что-то вродеgo1.21.5.
macOS
Если у вас Homebrew:
brew install go
Или вручную:
- Скачайте
.pkg-файл с go.dev/dl/. - Запустите и следуйте инструкциям.
- Проверьте:
go version.
Linux (Ubuntu/Debian)
sudo apt update
sudo apt install golang-go
Для других дистрибутивов (Fedora, Arch) используйте их менеджеры: sudo dnf install go или sudo pacman -S go.
Проверьте: go version.
Если возникнут проблемы, загляните на официальный сайт
Инструменты для работы
В данном курсе в основном мы будем использовать редактор кода VS Code и его расширение Go, по этому, для более удобной работы с Go, рекомендуем установить:
Терминалы
- Для Windows предпочтительнее использовать Powershell, но можно использовать CMD
- Для Linux и MacOS предпочтительнее использовать Warp. Warp - это удобный терминал с автодополнением команд, AI Агентом для помощи с ошибками и многими полезными функциями, которые улучшат ваш опыт работы с Go
Дополнительно
Кроме VS Code и Go, вы можете использовать редактор кода Zed и Golang IDE от JetBrains, но они являются более сложными для новичков
- JetBrains GoLand - Удобная IDE для разработки на языке Go, которая предлагает широкий набор инструментов для работы с Go, включая автодополнение, отладку и тестирование, но потребляет больше ресурсов, чем другие инструменты и недоступна в РФ
- Zed Editor - Редактор кода, который потребляет ещё меньше ресурсов, чем VS Code и быстрее работает, но менее интуитивный интерфейс для новичков, что может сбить с толку
Создание первой программы
Предполагается, что перед началом курса вы уже имели опыт работы с терминалом (в Linux или MacOS) либо командной строкой cmd/Powershell (на Windows) и уверенно владеете базовыми командами терминала или консоли. Если раньше вы не сталкивались с подобными инструментами, мы настоятельно советуем сначала освоить работу с ними, прежде чем продолжить обучение. Терминал или консоль являются основным рабочим инструментом при изучении языка программирования Go и управлении проектами на нём, поскольку обеспечивают удобство и расширенные возможности для выполнения операций над исходным кодом и управления зависимостями.
Давайте напишем классику: "Hello, World!" на Go и узнаем, как работать с кодом и как его запустить!
-
Создайте папку для проекта через консоль или терминал:
mkdir myfirstapp
cd myfirstapp -
Инициализируйте модуль:
go mod init myfirstapp
Инициализация модуля в Go — это процесс создания файлаgo.mod, который как бы «объявляет», что твоя папка с кодом теперь является модулем (самостоятельным проектом с зависимостями). Когда ты выполняешь команду go mod init имя_модуля (например,go mod init example.com/myapp), Go создаёт этот файл и начинает отслеживать все внешние библиотеки, которые ты используешь в программе. Благодаря модулю ты можешь легко управлять версиями пакетов, чтобы код работал одинаково на разных компьютерах, и не возникало путаницы с зависимостями. Для новичка это как паспорт проекта: без него Go не знает, как правильно собирать и подключать чужой код. -
Создайте файл
main.goи добавьте в него данный код:package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}package main: Это название пакета, который содержит главную функциюmain()import "fmt": Импортируем пакет для вывода текста (format)func main(): Главная функция, откуда стартует программаfmt.Println: Выводит заданную строку
-
Запустите:
go run main.goВывод:
Hello, World! -
Или скомпилируйте в исполняемый файл:
go build main.go
./main # На Windows: main.exe
Поздравляю! Вы только что написали и запустили первую программу на Go. Попробуйте изменить строку на "Привет, мир!" и запустить снова — увидите, как легко экспериментировать.
Основные консольные команды
Go — это не только код, но и удобные инструменты в терминале. Вот "шпаргалка" для начала:
go run файл.go: Запускает код без компиляции (идеально для тестов).go build: Создаёт исполняемый файл.go fmt: Автоматически форматирует код (всегда используйте — Go любит чистоту!).go test: Запускает тесты (об этом позже).go mod init имя: Инициализирует модуль.go get пакет: Устанавливает внешние пакеты (например,go get github.com/gorilla/muxдля веб-сервера).
Запомните: Go поощряет чистый код —
go fmtваш лучший друг.
Настройка рабочего пространства
Многие языки имеют свои форматы архитектуры папок. Например, в Python это src, в Java — src/main/java, в C++ — src. В Go рекомендуется использовать cmd для исполняемых файлов, internal для внутренних пакетов, а pkg для пакетов, которые могут быть использованы в других проектах. В дальнейшем, мы советуем вам использовать эту архитектуру папок, чтобы ваш код был чище и более организован.
Рекомендуемая архитектура папок:
myproject/
├── cmd/ # Для исполняемых файлов (если много)
│ └── main.go # Основной файл через который запускается проект
├── internal/ # Внутренние пакеты (не для экспорта)
├── pkg/ # Пакеты с кодом
│ └── utils.go # Пример: утилиты
├── go.mod # Файл модуля
└── go.sum # Хранение суммы hash-кодов пакетов
Создать проект с такой архитектурой вы можете в терминале вот так:
mkdir -p myproject/cmd myproject/pkg myproject/internal
cd myproject
go mod init myproject
После создания проекта, вы можете запустить main.go в терминале:
go run cmd/main.go
Данный архитектурный подход позволяет разделить код на три уровня: команды, пакеты и внутренние пакеты. Команды содержат точку входа в программу, пакеты содержат бизнес-логику, а внутренние пакеты содержат реализацию деталей.
Упражнения
Для упражнений вы можете использовать проект, который вы создали ранее myproject и работать с файлом cmd/main.go!
1. Персональное приветствие
Измените стандартный "Hello, World!" на эпичное приветствие самому себе.
Выведите минимум 3 строки:
🌍 Привет, мир!
👨🚀 Меня зовут [Твоё имя]!
🚀 Сегодня я начинаю изучать Go — самый быстрый язык на Земле!
2. Твой личный профиль в терминале
Сделай "визитку" о себе из текста.
Пример вывода:
╔═════════════════════════════╗
║ МОЯ ВИЗИТКА ║
╠═════════════════════════════╣
║ Имя: Алексей ║
║ Возраст: 18 ║
║ Город: Москва ║
║ Хобби: программирование ║
║ Любимый язык: Go! ║
╚═════════════════════════════╝
(Можешь использовать простые символы | и - вместо юникодных рамок, если не отображаются.)
3. Математическая магия
Выведи своё любимое число (например, 102) и всё интересное о нём:
🔢 Моё любимое число: 102
✨ Факты о нём:
• Вдвое больше: 84
• В квадрате: 1764
• В кубе: 74088
• Это ответ на главный вопрос жизни, вселенной и всего такого! 😉
4. ASCII-арт шедевр
Выведи любой простой ASCII-рисунок + подпись.
Примеры идей:
- Ракета (ты запускаешь карьеру в программировании!)
/\
/ \
/ \
/ \
/ \
/__________\
| GO ROCKS!|
|__________|
- Кот, дракон, робот, дерево — что угодно!
Главное — чтобы было креативно и с комментарием внизу: "Мой первый арт на Go!"
5. Мотивационная цитата дня
Выведи большую красивую цитату о программировании или учёбе.
Пример:
┌─────────────────────────────────────────────────────┐
│ "I've set myself to become the King of Pirates… │
│ and if I die trying… then at least I tried." │
│ │
│ — Кто-то умный │
└─────────────────────────────────────────────────────┘
Сегодня я сделал первый шаг в Go — и это только начало! 💪
6. Бонус: таймер обратного отсчёта до крутого события
Захардкодь количество дней до важной даты (например, до Нового года, дня рождения, конца семестра).
Пример:
🎉 До Нового 2027 года осталось всего 365 дней!
┌──┐ └──┐ └──┐ └──┐ └──┐
│ 5│ │ 4│ │ 3│ │ 2│ │ 1│
└──┘ └──┘ └──┘ └──┘ └──┘
Go, go, Go! 🚀