Función io.CopyN() 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 CopyN() en el lenguaje Go se usa para copiar «n» bytes desde el origen al destino. Y si la interfaz ReaderFrom implementa dst , la copia se implementa haciendo uso de ella. Además, esta función se define en el paquete io. Aquí, debe importar el paquete «io» para usar estas funciones.

Sintaxis:

func CopyN(dst Writer, src Reader, n int64) (written int64, err error)

Aquí, «dst» es el destino, «src» es la fuente desde donde se copia el contenido al destino y «n» es el límite de la cantidad de bytes que se copiarán desde la fuente.

Valor devuelto: Devuelve el número total de bytes de tipo int64 que se copian en el «dst» y también devuelve el primer error que se enfrenta al copiar de src a dst, si lo hay. Además, el número de bytes devueltos es «n» si y solo si el error es «nil».

Los siguientes ejemplos ilustran el uso del método anterior:

Ejemplo 1:

// Golang program to illustrate the usage of
// io.CopyN() function
  
// Including main package
package main
  
// Importing fmt, io, os, and strings
import (
    "fmt"
    "io"
    "os"
    "strings"
)
  
// Calling main
func main() {
  
    // Defining source
    src := strings.NewReader("GeeksforGeeks\n")
  
    // Defining destination using Stdout
    dst := os.Stdout
  
    // Calling CopyN method with its parameters
    bytes, err := io.CopyN(dst, src, 5)
  
    // If error is not nil then panics
    if err != nil {
        panic(err)
    }
  
    // Prints output
    fmt.Printf("\nThe number of bytes are: %d\n", bytes)
}

Producción:

Geeks
The number of bytes are: 5

Aquí, el número de bytes devueltos es igual a «n» ya que el error es «nil».

Ejemplo 2:

// Golang program to illustrate the usage of
// io.CopyN() function
  
// Including main package
package main
  
// Importing fmt, io, os, and strings
import (
    "fmt"
    "io"
    "os"
    "strings"
)
  
// Calling main
func main() {
  
    // Defining source
    src := strings.NewReader("CS-Portal\n")
  
    // Defining destination using Stdout
    dst := os.Stdout
  
    // Calling CopyN method with its parameters
    bytes, err := io.CopyN(dst, src, 20)
  
    // If error is not nil then panics
    if err != nil {
        panic(err)
    }
  
    // Prints output
    fmt.Printf("The number of bytes are: %d\n", bytes)
}

Producción:

CS-Portal
panic: EOF

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

Aquí, en el ejemplo anterior, se usa el método de strings NewReader() desde donde se lee el contenido que se va a copiar. Y «Stdout» se usa aquí para crear un descriptor de archivo predeterminado donde se escribe el contenido copiado. Además, aquí la cantidad de bytes devueltos es menor que «n», por lo que se arroja un error EOF arriba.

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 *