En el lenguaje Go, los paquetes io proporcionan interfaces fundamentales para las primitivas de E/S. Y su trabajo principal es encerrar las implementaciones en curso de tal rey de los primitivos. La función SectionReader.ReadAt() en el lenguaje Go se usa para devolver el número de bytes leídos por el método NewSectionReader . Este método contiene un búfer y compensaciones como sus parámetros. Además, esta función se define en el paquete io. Aquí, debe importar el paquete «io» para usar estas funciones.
Sintaxis:
func (s *SectionReader) ReadAt(p []byte, off int64) (n int, err error)
Aquí, «s» es un puntero a SectionReader que devuelve el método NewSectionReader , «p» es un búfer de la longitud de bytes indicada y «off» es el desplazamiento de tipo int64 desde donde comienza la lectura.
Valor devuelto: Devuelve el número de bytes del contenido devuelto desde el búfer indicado de la longitud especificada, así como el desplazamiento y también devuelve un error, si lo hay, pero si no se produjo ningún error, se devuelve «nil».
Los siguientes ejemplos ilustran el uso del método anterior:
Ejemplo 1:
// Golang program to illustrate the usage of // io.SectionReader.ReadAt() function // Including main package package main // Importing fmt, io, and strings import ( "fmt" "io" "strings" ) // Calling main func main() { // Defining reader using NewReader method reader := strings.NewReader("GeeksforGeeks\n") // Calling NewSectionReader method with its parameters r := io.NewSectionReader(reader, 6, 12) // Defining buffer using make keyword buf := make([]byte, 4) // Calling ReadAt method with its parameters n, err := r.ReadAt(buf, 2) // If error is not nil then panics if err != nil { panic(err) } // Prints output fmt.Printf("Content in buffer: %s\n", buf) fmt.Printf("n: %v\n", n) }
Producción:
Content in buffer: Geek n: 4
En el ejemplo anterior, primero, el contenido se devuelve desde NewSectionReader() y luego ese contenido se lee desde el desplazamiento dado en el método ReadAt() hasta el número de bytes indicado en el búfer. Luego, el número de bytes del contenido resultante se devuelve como salida aquí. Además, el contenido del búfer anterior tiene solo 4 bytes, por lo que se devuelve «4» y no se produce ningún error al leer el contenido indicado, por lo que el error es «nulo».
Ejemplo 2:
// Golang program to illustrate the usage of // io.SectionReader.ReadAt() function // Including main package package main // Importing fmt, io, and strings import ( "fmt" "io" "strings" ) // Calling main func main() { // Defining reader using NewReader method reader := strings.NewReader("Computer Science!") // Calling NewSectionReader method with its parameters r := io.NewSectionReader(reader, 6, 12) // Defining buffer using make keyword buf := make([]byte, 10) // Calling ReadAt method with its parameters n, err := r.ReadAt(buf, 2) // If error is not nil then panics if err != nil { panic(err) } // Prints output fmt.Printf("Content in buffer: %s\n", buf) fmt.Printf("n: %v\n", n) }
Producción:
panic: EOF goroutine 1 [running]: main.main() /tmp/sandbox798260752/prog.go:31 +0x263
Aquí, el contenido en el búfer utilizado en el código anterior tiene menos bytes que los indicados, por lo que se genera un error EOF.
Publicación traducida automáticamente
Artículo escrito por nidhi1352singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA