Перейти к основному содержимому

Введение в Go


Go Logo


Что такое 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

  1. Перейдите на официальный сайт и скачайте .msi-файл для вашей версии (обычно 64-бит).
  2. Запустите файл и следуйте wizard'у — просто жмите "Далее".
  3. Добавьте Go в PATH (обычно это делается автоматически, но если нет: правой кнопкой на "Этот компьютер" → Свойства → Дополнительные параметры системы → Переменные среды → Path → Добавить C:\Go\bin или другой путь, куда вы установили Go).
  4. Проверьте в командной строке или powershell: go version. Должно вывести что-то вроде go1.21.5.

macOS

Если у вас Homebrew:

brew install go

Или вручную:

  1. Скачайте .pkg-файл с go.dev/dl/.
  2. Запустите и следуйте инструкциям.
  3. Проверьте: 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, рекомендуем установить:

  • VS Code
  • Расширение для VS Code - 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 и узнаем, как работать с кодом и как его запустить!

  1. Создайте папку для проекта через консоль или терминал:

    mkdir myfirstapp
    cd myfirstapp
  2. Инициализируйте модуль:

    go mod init myfirstapp


    Инициализация модуля в Go — это процесс создания файла go.mod, который как бы «объявляет», что твоя папка с кодом теперь является модулем (самостоятельным проектом с зависимостями). Когда ты выполняешь команду go mod init имя_модуля (например, go mod init example.com/myapp), Go создаёт этот файл и начинает отслеживать все внешние библиотеки, которые ты используешь в программе. Благодаря модулю ты можешь легко управлять версиями пакетов, чтобы код работал одинаково на разных компьютерах, и не возникало путаницы с зависимостями. Для новичка это как паспорт проекта: без него Go не знает, как правильно собирать и подключать чужой код.

  3. Создайте файл main.go и добавьте в него данный код:

    package main

    import "fmt"

    func main() {
    fmt.Println("Hello, World!")
    }
    • package main: Это название пакета, который содержит главную функцию main()
    • import "fmt": Импортируем пакет для вывода текста (format)
    • func main(): Главная функция, откуда стартует программа
    • fmt.Println: Выводит заданную строку
  4. Запустите:

    go run main.go

    Вывод: Hello, World!

  5. Или скомпилируйте в исполняемый файл:

    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! 🚀