Scanner — обёртка над io.Reader для удобного чтения по токенам. По умолчанию разбивает на строки (ScanLines), но можно использовать ScanWords, ScanBytes или написать свой split-функцию. Внутри использует буфер, который растёт по необходимости до лимита. Метод Scan() возвращает false когда данные кончились или произошла ошибка. Ошибку проверяй через Err(). Идеален для чтения логов, CSV, конфигов построчно.