Función io.PipeWriter.Close() 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 PipeWriter.Close() en el lenguaje Go se usa para cerrar el escritor. Sin embargo, las lecturas sucesivas del PipeReader , es decir, leer la mitad de la canalización no devolverá ningún byte y se devolverá un error EOF. Además, esta función se define en el paquete io. Aquí, debe importar el paquete «io» para usar estas funciones.

Sintaxis:

func (w *PipeWriter) Close() error

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

Valor devuelto: Devuelve el contenido escrito antes del método Cerrar. Y las lecturas sucesivas de PipeReader, es decir, leer la mitad de la canalización no devolverán ningún byte después de llamar al método Close() y se devolverá un error EOF.

Ejemplo 1:

// Golang program to illustrate the usage of
// io.PipeWriter.Close() function
  
// Including main package
package main
  
// Importing fmt and io
import (
    "fmt"
    "io"
)
  
// Calling main
func main() {
  
    // Calling Pipe method
    pipeReader, pipeWriter := io.Pipe()
  
    // Calling Close method in go function after
    // two Write operations
    go func() {
        pipeWriter.Write([]byte("GfG"))
        pipeWriter.Write([]byte("GeeksforGeeks"))
        pipeWriter.Close()
  
        // Again calling Write method
        pipeWriter.Write([]byte("GfG is a CS-Portal."))
    }()
  
    // Creating buffer using make keyword
    // of specified length
    buffer := make([]byte, 50)
  
    // Using for loop
    for i := 0; i < 4; i++ {
  
        // Reading the contents in buffer
        n, err := pipeReader.Read(buffer)
  
        // If error is not nil panic
        if err != nil {
            panic(err)
        }
  
        // Prints the content read in buffer
        fmt.Printf("%s\n", buffer[:n])
    }
}

Producción:

GfG
GeeksforGeeks
panic: EOF

goroutine 1 [running]:
main.main()
    /tmp/sandbox342418232/prog.go:42 +0x2d1

Aquí, el contenido de las dos operaciones de escritura se devuelve tal como se escriben antes del método Close(), pero el contenido escrito después del método Close no se devuelve y, en su lugar, se genera un error EOF.

Ejemplo 2:

// Golang program to illustrate the usage of
// io.PipeWriter.Close() function
  
// Including main package
package main
  
// Importing fmt and io
import (
    "fmt"
    "io"
)
  
// Calling main
func main() {
  
    // Calling Pipe method
    pipeReader, pipeWriter := io.Pipe()
  
    // Calling Close method in go function
    go func() {
        pipeWriter.Close()
  
        // Calling Write method
        pipeWriter.Write([]byte("GfG is a CS-Portal."))
    }()
  
    // Creating buffer using make keyword
    // of specified length
    buffer := make([]byte, 50)
  
    // Using for loop
    for i := 0; i < 4; i++ {
  
        // Reading the contents in buffer
        n, err := pipeReader.Read(buffer)
  
        // If error is not nil panic
        if err != nil {
            panic(err)
        }
  
        // Prints the content read in buffer
        fmt.Printf("%s\n", buffer[:n])
    }
}

Producción:

panic: EOF

goroutine 1 [running]:
main.main()
    /tmp/sandbox173042396/prog.go:40 +0x2d1

Aquí, no se realiza ninguna operación de escritura antes del método de cierre, por lo que no se devuelve ningún contenido y 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 *