РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
589 of 1593 menu

Ошибка io.EOF

Ошибка io.EOF (End Of File) возвращается функциями чтения, когда они пытаются прочитать данные из источника, в котором больше нет доступных данных. Это не критическая ошибка, а стандартный сигнал о том, что данные закончились. В первом параметре функции чтения передается источник данных (например, файл), во второй параметр передается буфер для чтения данных.

Синтаксис

import "io" n, err := r.Read(buf) if err == io.EOF { // данные закончились }

Пример с чтением из файла

Давайте прочитаем файл целиком и обработаем ошибку io.EOF:

package main import ( "fmt" "io" "os" ) func main() { file, err := os.Open("example.txt") if err != nil { fmt.Println("Error opening file:", err) return } defer file.Close() buf := make([]byte, 1024) for { n, err := file.Read(buf) if err == io.EOF { fmt.Println("End of file reached") break } if err != nil { fmt.Println("Error reading file:", err) return } fmt.Print(string(buf[:n])) } }

Результат выполнения кода (если в файле example.txt содержится текст "Hello, World!"):

"Hello, World!" "End of file reached"

Пример с использованием io.ReadAll

Функция io.ReadAll читает все данные из источника до тех пор, пока не встретит io.EOF:

package main import ( "fmt" "io" "strings" ) func main() { r := strings.NewReader("12345") data, err := io.ReadAll(r) if err != nil { fmt.Println("Error:", err) return } fmt.Println(string(data)) }

Результат выполнения кода:

"12345"

Пример с чтением по байтам

При посимвольном чтении также может возникнуть io.EOF:

package main import ( "bytes" "fmt" "io" ) func main() { data := []byte("abcde") reader := bytes.NewReader(data) for { b, err := reader.ReadByte() if err == io.EOF { fmt.Println("EOF") break } if err != nil { fmt.Println("Error:", err) break } fmt.Printf("%c ", b) } }

Результат выполнения кода:

"a b c d e EOF"

Смотрите также

  • ошибку io.ErrUnexpectedEOF,
    которая возникает при неожиданном окончании данных
  • функцию io.ReadAll,
    которая читает все данные до конца
  • метод os.File.Read,
    который возвращает io.EOF при достижении конца файла
  • функцию io.Copy,
    которая копирует данные до достижения конца источника
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить