Función io.SectionReader.Read() en Golang con ejemplos

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.Read() en el lenguaje Go se usa para devolver el número de bytes leídos por el método NewSectionReader . Este método tiene un búfer como su parámetro. 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) Read(p []byte) (n int, err error)

Aquí, «s» es un puntero a SectionReader que devuelve el método NewSectionReader , y «p» es un búfer de la longitud de bytes indicada.

Valor devuelto: Devuelve el número de bytes del contenido devuelto desde el búfer indicado de longitud especificada 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.Read() 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("Geeks\n")
  
    // Calling NewSectionReader method with its parameters
    r := io.NewSectionReader(reader, 2, 4)
  
    // Defining buffer using make keyword
    buf := make([]byte, 3)
  
    // Calling Read method with its parameter
    n, err := r.Read(buf)
  
    // 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: eks
n: 3

En el ejemplo anterior, el contenido del búfer tiene solo tres bytes, por lo que se devuelve «3» 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.Read() 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\nis\na\nCS-Portal.")
  
    // Calling NewSectionReader method with its parameters
    r := io.NewSectionReader(reader, 6, 34)
  
    // Defining buffer using make keyword
    buf := make([]byte, 25)
  
    // Calling Read method with its parameter
    n, err := r.Read(buf)
  
    // 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/sandbox125171693/prog.go:31 +0x25a

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *