День 16 · Срезы: много значений в одной переменной · страница 7 из 7

Ритуал, коммиты и словарик

Задания дня разложены по пяти каталогам. Перед последним коммитом — ритуал из дня 14: формат, vet, тесты по всему модулю сразу.


Ритуал по всему модулю

Пример · только посмотреть, набирать не нужно
stagiaire@lab:~/gocourse/day16$ gofmt -l .
stagiaire@lab:~/gocourse/day16$ go vet ./...
stagiaire@lab:~/gocourse/day16$ go test ./...
?   	day16/fix1	[no test files]
?   	day16/fix2	[no test files]
ok  	day16/low	(cached)
?   	day16/scratch	[no test files]
?   	day16/stock	[no test files]
?   	day16/trace	[no test files]

Как это читать. ./... — «этот каталог и все каталоги внутри»: одна команда проходит по всем заданиям. gofmt -l . и go vet ./... молчат — значит, замечаний нет. У go test ./... строка на каждый каталог: [no test files] — тестов там нет, это не ошибка; ok — тесты прошли; (cached) — код с прошлого прогона не менялся, и go test взял готовый результат вместо повторного запуска.


История дня

Каждое задание закончилось коммитом, и история читается как отчёт о дне — снизу вверх:

Пример · только посмотреть, набирать не нужно
stagiaire@lab:~/gocourse/day16$ git log --oneline
01149b1 low: тест к lowCells
a6cd1e1 stock: отчёт по ячейкам
4cb4345 trace: таблица
0127af1 fix2: индексы с нуля
9d08b93 fix1: срез после append
620444c день 16: заготовки

Хеши у вас другие. Забытое заберут git add . и git commit в конце, но задание, закоммиченное отдельно, легче найти: git show с его хешем.


Попробуйте сейчас: ритуал и коммиты.

Цель: весь модуль чист, работа дня лежит в истории.

1. Ритуал:

▶ Выполните
cd ~/gocourse/day16
gofmt -l .
go vet ./...
go test ./...

Если gofmt -l . печатает имена файлов — gofmt -w . или Ctrl+S в VS Code.

2. Всё, что осталось незакоммиченным, — в историю:

▶ Выполните
git status -s
git add .
git commit -m "день 16: ритуал"
git log --oneline

Если git status -s ничего не печатает, коммитить нечего — git commit так и скажет, это не ошибка.

Готово, когда: пункты code_fmt и git зелёные: в stock, low, fix1, fix2 код отформатирован и go vet молчит, а в истории не меньше четырёх коммитов с изменениями.


Словарик ошибок

Сегодня сообщения двух видов: компилятор (программа не собралась) и паника (собралась, но упала при запуске с кодом 2). В словарик идут оба. Допишите в ~/errors.md то, что встретили сами: слева текст ошибки, тире, справа разбор своими словами.

Образец · набирать не нужно
panic: runtime error: index out of range [3] with length 3 - цикл дошёл до i == len, последний индекс len-1
invalid operation: got != want (slice can only be compared to nil) - срезы сравнивают по длине и поэлементно

К концу дня в словарике должно быть не меньше 32 разборов — записи за все дни считаются вместе. Разделитель — тире с пробелами, двоеточие не считается: оно есть в каждом сообщении. Сколько строк уже засчитывается, покажет та же команда, что в дне 13:

grep -E '.{20,}' ~/errors.md | grep -cE ' (-|—|–) ' — число в ответ.

Что стоит записать сегодня: index out of range у среза и out of bounds у массива, append(…) … is not used, invalid append, slice can only be compared to nil, а словами — «длина всё время 1: результат append ушёл в новую переменную».


Итог дня


Материал дня закончен. Задания — course lab 16, дополнительное чтение — course extra 16