Función io.Pipe() 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 Pipe() en el lenguaje Go se usa para crear una canalización simultánea en memoria y se puede aplicar para vincular el código que espera un io.Reader con el código que espera un io.Writer . Aquí, las lecturas y las escrituras en la tubería se emparejan uno a uno, excepto cuando se requieren más de una «lectura» para tomar una sola «escritura». Esto indica que cada escritura en el PipeWriter se detiene hasta que haya saciado una o más lecturas del PipeReader.que toma completamente los datos escritos.

Sin embargo, los datos se rastrean inmediatamente desde la escritura hasta las lecturas relacionadas y no hay almacenamiento en búfer interno. Además, esta función se define en el paquete io. Aquí, debe importar el paquete «io» para usar estas funciones.

Sintaxis:

func Pipe() (*PipeReader, *PipeWriter)

Aquí, «PipeReader» es un puntero a PipeReader. Donde PipeReader es la mitad de lectura de una tubería y «PipeWriter» es un puntero a PipeWriter. Donde PipeWriter es la mitad de escritura de una tubería.

Valor devuelto: Devuelve un puntero a PipeReader y PipeWriter.

Nota: Está asegurado para llamar a Leer y Escribir simultáneamente o con Cerrar. Sin embargo, las llamadas paralelas a lectura y las llamadas paralelas a escritura también están protegidas. Las llamadas separadas se cerrarán secuencialmente.

Ejemplo 1:

// Golang program to illustrate the usage of
// io.Pipe() function
  
// Including main package
package main
  
// Importing fmt, io, and bytes
import (
    "bytes"
    "fmt"
    "io"
)
  
// Calling main
func main() {
  
    // Calling Pipe method
    pipeReader, pipeWriter := io.Pipe()
  
    // Using Fprint in go function to write
    // data to the file
    go func() {
        fmt.Fprint(pipeWriter, "Geeks\n")
  
        // Using Close method to close write
        pipeWriter.Close()
    }()
  
    // Creating a buffer
    buffer := new(bytes.Buffer)
  
    // Calling ReadFrom method and writing
    // data into buffer
    buffer.ReadFrom(pipeReader)
  
    // Prints the data in buffer
    fmt.Print(buffer.String())
}

Producción:

Geeks

Ejemplo 2:

// Golang program to illustrate the usage of
// io.Pipe() function
  
// Including main package
package main
  
// Importing fmt, io, and bytes
import (
    "bytes"
    "fmt"
    "io"
)
  
// Calling main
func main() {
  
    // Calling Pipe method
    pipeReader, pipeWriter := io.Pipe()
  
    // Using Fprint in go function to write
    // data to the file
    go func() {
        fmt.Fprint(pipeWriter, "GeeksforGeeks\nis\na\nCS-Portal.\n")
  
        // Using Close method to close write
        pipeWriter.Close()
    }()
  
    // Creating a buffer
    buffer := new(bytes.Buffer)
  
    // Calling ReadFrom method and writing
    // data into buffer
    buffer.ReadFrom(pipeReader)
  
    // Prints the data in buffer
    fmt.Print(buffer.String())
}

Producción:

GeeksforGeeks
is
a
CS-Portal.

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 *