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 ReadAtLeast() en el lenguaje Go se usa para leer del lector indicado «r» en el búfer indicado «buf» hasta que haya leído al menos la cantidad mínima de bytes indicados. Además, esta función se define en el paquete io. Aquí, debe importar el paquete «io» para usar estas funciones.
Sintaxis:
func ReadAtLeast(r Reader, buf []byte, min int) (n int, err error)
Aquí, «r» es el lector indicado, «buf» es el búfer indicado y «min» es el número mínimo de bytes hasta que el lector lee en el búfer dado.
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 el número mínimo de bytes. Aquí, «n» devuelto será mayor que los bytes «min» 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 que los bytes «mínimos» indicados, este método devuelve el error ErrUnexpectedEOF . Pero, si el número mínimo de bytes indicado es mayor que la longitud del búfer indicado, este método devuelve el error ErrShortBuffer . Sin embargo, si el lector indicado devuelve un error después de leer al menos los bytes mínimos indicados, el error se rechaza.
Ejemplo 1:
// Golang program to illustrate the usage of // io.ReadAtLeast() 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 ReadAtLeast method with its parameters n, err := io.ReadAtLeast(reader, buffer, 3) // 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: 5 Content in buffer: Geeks
Aquí, la ‘n’ devuelta, es decir, 5 es mayor que ‘min’, es decir, 3 como error es cero.
Ejemplo 2:
// Golang program to illustrate the usage of // io.ReadAtLeast() 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") // Defining buffer of specified length // using make keyword buffer := make([]byte, 4) // Calling ReadAtLeast method with its parameters n, err := io.ReadAtLeast(reader, buffer, 5) // 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: short buffer goroutine 1 [running]: main.main() /tmp/sandbox041442440/prog.go:29 +0x20f
Aquí, el búfer indicado en el código anterior tiene una longitud menor que los bytes «min» indicados, por lo que se genera un error.
Publicación traducida automáticamente
Artículo escrito por nidhi1352singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA