Función io.ReadFull() 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 ReadFull() en el lenguaje Go se usa para leer del lector indicado «r» en el búfer indicado «buf» y los bytes copiados son exactamente iguales a la longitud del búfer especificado. Además, esta función se define en el paquete io. Aquí, debe importar el paquete «io» para usar estas funciones.

Sintaxis:

func ReadFull(r Reader, buf []byte) (n int, err error)

Aquí, «r» es el lector declarado, «buf» es el búfer declarado de la longitud especificada.

Valor de retorno: Devuelve el número de bytes que copia el búfer indicado y también devuelve un error si el número de lecturas de bytes es menor que la longitud del búfer especificado. Aquí, «n» devuelto será igual a la longitud del búfer especificado si y solo si el error es nulo. Sin embargo, el error devuelto es «EOF» si y solo si no se leen bytes.

Nota: si se produce un EOF después de leer menos bytes pero no todos, este método devuelve un error ErrUnexpectedEOF . Sin embargo, si el lector indicado devuelve un error después de leer al menos la longitud del búfer, el error se rechaza.

Ejemplo 1:

// Golang program to illustrate the usage of
// io.ReadFull() 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")
  
    // Defining buffer of specified length
    // using make keyword
    buffer := make([]byte, 4)
  
    // Calling ReadFull method with its parameters
    n, err := io.ReadFull(reader, buffer)
  
    // If error is not nil then panics
    if err != nil {
        panic(err)
    }
  
    // Prints output
    fmt.Printf("Number of bytes in the buffer: %d\n", n)
    fmt.Printf("Content in buffer: %s\n", buffer)
}

Producción:

Number of bytes in the buffer: 4
Content in buffer: Geek

Aquí, la ‘n’ devuelta, es decir, 4 es igual a la longitud de ‘buf’ ya que el error es nulo.

Ejemplo 2:

// Golang program to illustrate the usage of
// io.ReadFull() 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")
  
    // Defining buffer of specified length
    // using make keyword
    buffer := make([]byte, 6)
  
    // Calling ReadFull method with its parameters
    n, err := io.ReadFull(reader, buffer)
  
    // If error is not nil then panics
    if err != nil {
        panic(err)
    }
  
    // Prints output
    fmt.Printf("Number of bytes in the buffer: %d\n", n)
    fmt.Printf("Content in buffer: %s\n", buffer)
}

Producción:

panic: unexpected EOF

goroutine 1 [running]:
main.main()
    /tmp/sandbox503804944/prog.go:29 +0x210

Aquí, el búfer indicado en el código anterior tiene una longitud mayor que los bytes leídos del lector, 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 *