День 09 · дополнительные материалы

День 09 — глубже

Всё здесь необязательно. Материалы на английском помечены.


Delve (англ.)

VS Code (англ.)

Про методику (англ.)


Мини-опыты

Все — на оригинальной priemka: cp ~/.course/orig/day09/priemka/main.go ~/gocourse/day09/priemka/.

  1. Невидимое в файле. cat -A input.txt показывает конец каждой строки знаком $. Найдите строку, где перед $ стоит пробел. Чем этот способ хуже %q, если строк десять тысяч?
  2. Условие по счёту остановок. В dlv: точка на строке 25, condition -hitcount 1 == 7, continue, print i. Почему i не равно 7? Подсказка: пустая строка и строка с пробелом до строки 25 не доходят.
  3. Выражения в print. На любой остановке внутри цикла: print total * 2, print line == "14 ", print len(line). Что можно спросить у отладчика, не меняя программу?
  4. Другой ввод без выхода. Сделайте файл small.txt из двух строк. В сеансе dlv наберите restart <small.txt — справка help restart описывает эту запись. Ввод из -r при этом заменяется.
  5. Код вокруг. list на остановке показывает код вокруг текущей строки, list main.go:1 — начало файла. Удобно, когда экран уехал.
  6. Сборка без ускорений. Соберите go build -gcflags='all=-N -l' и запустите dlv exec ./priemka -r input.txt, точка на строке 25. Появится ли Warning: debugging optimized function? Сравните с обычным go build.