Ваш цикл прерывается, когда reader.Read()
возвращает io.EOF
. Это происходит, когда ваш ввод потребляется.
В то же время (когда возвращается io.EOF
), возвращаемая запись будет nil
. Reader.Read()
:
Если нет данных для чтения, Read возвращает nil, io.EOF .
Таким образом, вы присваиваете nil
переменной record
, цикл прерывается, и вы проверяете переменную record
.
Если вы хотите сохранить последнюю запись, сохраните ее в отдельной переменной и не перезаписывайте ее последней nil
записью:
var lastRecord []string
for {
record, err = reader.Read()
// Stop at EOF.
if err == io.EOF {
break
}
lastRecord = record
fmt.Printf("%v", record) // works fine
fmt.Printf("%v\n", record[0]) // works fine too
}
fmt.Printf("%v\n", lastRecord) // this will be the last non-nil record