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