Как начать учить Go с нуля: план на первые четыре недели
Go — язык, на котором написаны Docker, Kubernetes и множество серверов. Он строгий, но небольшой: ключевых слов в нём всего 25, а программа собирается в один исполняемый файл. Поэтому Go хорошо подходит как первый «серьёзный» язык для бэкенда.
Ниже — план на первые четыре недели, по 30–60 минут в день. Главное правило: каждый день писать свой код, даже маленький. Чтение без практики почти ничего не оставляет.
Неделя 1. Первая программа и основы
Вся программа на Go живёт в пакете main и начинается с функции main:
package main
import "fmt"
func main() {
fmt.Println("Hello, Shop!")
}
Запустить её можно одной командой go run main.go — Go соберёт и сразу выполнит программу. Команда go build делает из кода отдельный файл, который потом запускается без установленного Go: так программы на Go и разворачивают на серверах.
Что освоить за неделю:
- переменные и типы:
int,float64,string,bool; объявление черезvarи короткое:=; - арифметику и вывод через
fmt.Printlnиfmt.Printf; - условия
if / elseи циклfor— в Go он единственный, безwhile.
Попробуйте сами: посчитайте сумму заказа из трёх товаров и примените скидку 10%, если сумма больше 5000.
Неделя 2. Функции, слайсы и map
Функции в Go могут возвращать несколько значений — это используется повсюду. Слайс — список значений, map — словарь «ключ → значение». Вот как посчитать, сколько заказов сделал каждый покупатель:
orders := []string{"anna", "ivan", "anna", "olga", "anna"}
count := map[string]int{}
for _, user := range orders {
count[user]++
}
fmt.Println(count["anna"], count["ivan"], count["petr"]) // 3 1 0
Обратите внимание на count["petr"]: такого ключа нет, но программа не падает, а возвращает ноль — значение по умолчанию для int. Это удобно для счётчиков.
Неделя 3. Свои типы и ошибки
Структуры (struct) описывают свои типы данных — товар, заказ, пользователя. Методы — функции, привязанные к типу.
Самое непривычное для новичков — ошибки. В Go нет исключений: функция, которая может не сработать, возвращает ошибку вторым значением, и вызывающий код проверяет её сразу.
func parsePrice(s string) (int, error) {
price, err := strconv.Atoi(s)
if err != nil {
return 0, fmt.Errorf("цена %q: %w", s, err)
}
if price < 0 {
return 0, fmt.Errorf("цена не может быть отрицательной: %d", price)
}
return price, nil
}
Для строк "1990", "abc" и "-5" эта функция вернёт цену 1990 и две понятные ошибки:
цена: 1990
ошибка: цена "abc": strconv.Atoi: parsing "abc": invalid syntax
ошибка: цена не может быть отрицательной: -5
Сначала if err != nil кажется многословным, но зато по коду всегда видно, где что-то может пойти не так.
Неделя 4. Настоящий проект
Последняя неделя — выйти из учебных примеров:
- установить Go и создать модуль командой
go mod init; - разбить код на пакеты и файлы;
- поднять маленький HTTP-сервер на стандартном пакете
net/http— без фреймворков; - собрать мини-API: список товаров и оформление заказа.
После этого у вас будет первый проект, который можно показать.
Частые ошибки новичков
Компилятор Go строгий — и это помогает. Вот что он скажет в первые дни:
Неиспользуемые переменные и импорты — ошибка, а не предупреждение.
"fmt" imported and not used
declared and not used: total
Удалите лишнее или используйте его — программа не соберётся, пока в ней есть «мусор».
Запись в пустой map без make роняет программу.
var stock map[string]int
stock["laptop"] = 5 // panic: assignment to entry in nil map
Создавайте map через make(map[string]int) или литерал map[string]int{}.
:= работает только внутри функций. Вне функции компилятор ответит non-declaration statement outside function body — там нужно писать var limit = 10.
Как не бросить
- Пишите код каждый день, пусть по 20 минут. Перерыв в неделю почти обнуляет прогресс.
- Читайте ошибки компилятора полностью: в Go они короткие и обычно точно говорят, что не так.
- Решайте задачи с автоматической проверкой — так сразу видно, работает решение или нет, и не нужно ждать проверяющего.
- Не прыгайте к фреймворкам, пока не освоили стандартную библиотеку: в Go на ней пишут реальные сервисы.
Этот план повторяет программу курса «Go: Основы» на Cova.Studio: короткая теория, квиз и задача с автопроверкой в каждом уроке, все примеры — на задачах интернет-магазина. Первый модуль бесплатный.