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

Интерфейс io.Seeker

Интерфейс io.Seeker предназначен для объектов, поддерживающих произвольный доступ к данным. Он содержит единственный метод Seek, который позволяет изменить текущую позицию в потоке данных. В первый параметр передается смещение (offset) в байтах, во второй параметр передается константа, определяющая точку отсчета: io.SeekStart (от начала файла), io.SeekCurrent (от текущей позиции) или io.SeekEnd (от конца файла). Метод возвращает новую абсолютную позицию и ошибку, если она возникла.

Синтаксис

Seek(offset int64, whence int) (int64, error)

Пример

Давайте создадим файл и переместим указатель на 10 байт от начала файла:

package main import ( "fmt" "io" "os" ) func main() { file, err := os.Open("example.txt") if err != nil { fmt.Println(err) return } defer file.Close() pos, err := file.Seek(10, io.SeekStart) if err != nil { fmt.Println(err) return } fmt.Printf("New position: %d\n", pos) }

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

"New position: 10"

Пример

Переместим указатель на 5 байт вперед от текущей позиции:

package main import ( "fmt" "io" "os" ) func main() { file, err := os.Open("example.txt") if err != nil { fmt.Println(err) return } defer file.Close() _, err = file.Seek(10, io.SeekStart) if err != nil { fmt.Println(err) return } pos, err := file.Seek(5, io.SeekCurrent) if err != nil { fmt.Println(err) return } fmt.Printf("Position after forward move: %d\n", pos) }

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

"Position after forward move: 15"

Пример

Переместим указатель на 20 байт от конца файла (отрицательное смещение):

package main import ( "fmt" "io" "os" ) func main() { file, err := os.Open("example.txt") if err != nil { fmt.Println(err) return } defer file.Close() pos, err := file.Seek(-20, io.SeekEnd) if err != nil { fmt.Println(err) return } fmt.Printf("Position from end: %d\n", pos) }

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

"Position from end: 524"

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

  • интерфейс io.Reader,
    предоставляющий метод Read для чтения данных
  • интерфейс io.Writer,
    предоставляющий метод Write для записи данных
  • интерфейс io.Closer,
    предоставляющий метод Close для закрытия ресурса
  • функцию io.SectionReader,
    которая создает Reader для чтения секции данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить