Вы читаете весь файл сразу как строку (не байты), а затем обрабатываете его по рунам (не побайтно). Чтобы буквально прочитать файл по одному байту за раз (что , скорее всего, не то, что вы хотите ), вы должны сделать именно это:
f, err := os.Open("path")
if err != nil {
panic(err)
}
b := make([]byte, 1)
for err := f.Read(b) {
if err != nil && !errors.Is(err, io.EOF) {
fmt.Println(err)
break
}
// process the one byte b[0]
if err != nil {
// end of file
break
}
}
Однако, скорее всего, вам нужно эффективно читать файл и обрабатывать по одному байту за раз. Для этого вы должны использовать буферизованный ридер :
f, err := os.Open("path")
if err != nil {
panic(err)
}
br := bufio.NewReader(f)
for b,err := br.ReadByte() {
if err != nil && !errors.Is(err, io.EOF) {
fmt.Println(err)
break
}
// process the one byte b
if err != nil {
// end of file
break
}
}