Разбираем, почему полезно «собирать вывод» через контракт
io.Writer, а не печатать из каждой функции через
fmt.Println. Сравниваем
bytes.Buffer (байты + потоковое чтение через
Read) и
strings.Builder (быстрая сборка строк), учимся перенаправлять вывод в память для проверок и тестов, и строим мини-рендер задач с
WriteTasks.