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.Write() en el lenguaje Go se usa para implementar la interfaz estándar de Write. Escribe información en la tubería y la bloquea hasta que un lector o más de un lector haya tomado toda la información o se cierre el extremo de lectura de la tubería. 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) Write(data []byte) (n int, err error)
Aquí, «w» es un puntero a PipeWriter. Donde PipeWriter es la mitad de escritura de la canalización y «datos» es un segmento de bytes donde se escriben los datos.
Valor devuelto: Devuelve el número de bytes escritos y un error si lo hubiera. Sin embargo, si el extremo de lectura de la canalización se cierra con un error, ese error se devuelve como err ; de lo contrario, el err devuelto es un error ErrClosedPipe.
Ejemplo 1:
// Golang program to illustrate the usage of // io.pipeWriter.Write() function // Including main package package main // Importing fmt and io import ( "fmt" "io" ) // Calling main func main() { // Calling Pipe method pipeReader, pipeWriter := io.Pipe() // Defining data parameter of Read method data := make([]byte, 20) // Reading data into the buffer stated go func() { pipeReader.Read(data) // Closing read half of the pipe pipeReader.Close() }() // Using for loop for i := 0; i < 1; i++ { // Calling pipeWriter.Write() method n, err := pipeWriter.Write([]byte("GfG!")) // If error is not nil panic if err != nil { panic(err) } // Prints the content written fmt.Printf("%v\n", string(data)) // Prints the number of bytes fmt.Printf("%v\n", n) } }
Producción:
GfG! 4
Aquí, no se devuelve ningún error ya que el extremo de lectura de la canalización no se cierra hasta que se ejecuta el bucle «for».
Ejemplo 2:
// Golang program to illustrate the usage of // io.pipeWriter.Write() function // Including main package package main // Importing fmt and io import ( "fmt" "io" ) // Calling main func main() { // Calling Pipe method pipeReader, pipeWriter := io.Pipe() // Defining data parameter of Read method data := make([]byte, 20) // Reading data into the buffer stated go func() { pipeReader.Read(data) // Closing read half of the pipe pipeReader.Close() }() // Using for loop for i := 0; i < 2; i++ { // Calling pipeWriter.Write() method n, err := pipeWriter.Write([]byte("GfG!")) // If error is not nil panic if err != nil { panic(err) } // Prints the content written fmt.Printf("%v\n", string(data)) // Prints the number of bytes fmt.Printf("%v\n", n) } }
Producción:
GfG! 4 panic: io: read/write on closed pipe goroutine 1 [running]: main.main() /tmp/sandbox367087659/prog.go:38 +0x3ad
Aquí, se devuelve un error ErrClosedPipe cuando el extremo de lectura de la canalización se cierra después de la primera iteración del bucle for.
Publicación traducida automáticamente
Artículo escrito por nidhi1352singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA