-1

I'm trying to understand difference between two file-reading cases.

Code below works fine. We reading file line-by-line to the variable:

reader := bufio.NewReader(file)

var line string
for err != io.EOF {
    line, err = reader.ReadString('\n')
    log.Println(line)
}

But if I want to init (using reader) in for scope reader will infinitely read only first line of code:

reader := bufio.NewReader(file)

var line string
for line, err = reader.ReadString('\n'); err != io.EOF; {
    log.Println(line)
}

Please, explain me why it happens? Thanks

kostix
  • 51,517
  • 14
  • 93
  • 176
Anatol'
  • 9
  • 4

1 Answers1

0

Move it from initialization (Which runs only once) to post-statement. Change it to

for line, err = reader.ReadString('\n'); err != io.EOF; line, err = reader.ReadString('\n') {
    log.Println(line)
}
Kishore Bandi
  • 5,537
  • 2
  • 31
  • 52
  • Maybe it's not the best decision (we have repeated code) but I could see true difference. Thank you. It solves my problem – Anatol' Jul 15 '20 at 14:14