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