Недавно я столкнулся с проблемой чтения из файла CSV, применения некоторых преобразований к каждой строке и записи в запрос HTTP.
Проблема, с которой я столкнулся, заключалась в том, как преобразовать построчное считывающее устройство, которое возвращает произвольное количество байтов (например, сканер), в считывающее устройство байтов, которое возвращает фиксированное количество байтов на каждомcall to Read ().
Лучшее решение, которое я придумал, - это создать собственный io.Reader, который будет считывать данные со сканера и локально буферизовать байты, если они не подходят.Затем буферизованные байты будут возвращены при следующем вызове Read ().
Вот что я придумал: https://gist.github.com/paulsc/6a0bf30a2a8d898f7a8086aedf6af1e1
Интуитивно, это похоже на неправильное решение, потому чтокод кажется довольно низкоуровневым решением, которое может быть уже в стандартной библиотеке.
Есть ли лучший, более идиоматичный способ сделать это со стандартными компонентами go?