io.PipeReader.Close() Function in Golang with Examples
Last Updated :
10 May, 2020
In Go language,
io packages supply fundamental interfaces to the I/O primitives. And its principal job is to enclose the ongoing implementations of such king of primitives. The
PipeReader.Close() function in Go language is used to close the reader. However, successive writes to the
PipeWriter i.e, write half of the pipe will return the ErrClosedPipe error. Moreover, this function is defined under the io package. Here, you need to import the "io" package in order to use these functions.
Syntax:
func (r *PipeReader) Close() error
Here, "r" is a pointer to the PipeReader. Where PipeReader is the read half of a pipe.
Return value: It returns the content written before calling Close method. And successive writes to the
PipeWriter i.e, write half of the pipe will return the ErrClosedPipe error.
Example 1:
C
// Golang program to illustrate the usage of
// io.pipeReader.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 Write method in go function
go func() {
pipeWriter.Write([]byte("GfG"))
pipeWriter.Write([]byte("GeeksforGeeks"))
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 < 2; i++ {
// Reading the contents in buffer
n, err := pipeReader.Read(buffer)
// If error is not nil panic
if err != nil {
panic(err)
}
// Calling Close method
pipeReader.Close()
// Prints the content read in buffer
fmt.Printf("%s\n", buffer[:n])
}
}
Output:
GfG
panic: io: read/write on closed pipe
goroutine 1 [running]:
main.main()
/tmp/sandbox180013044/prog.go:38 +0x302
Here, the content of only one Write operations is returned as its written before Close() method but the content written after the Close method is not returned and an ErrClosedPipe error is thrown instead.
Example 2:
C
// Golang program to illustrate the usage of
// io.pipeReader.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 Write method in go function
go func() {
pipeWriter.Write([]byte("GfG"))
pipeWriter.Write([]byte("GeeksforGeeks"))
pipeWriter.Write([]byte("GfG is a CS-Portal."))
}()
// Creating buffer using make keyword
// of specified length
buffer := make([]byte, 50)
// Calling Close method
pipeReader.Close()
// Using for loop
for i := 0; i < 2; 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])
}
}
Output:
panic: io: read/write on closed pipe
goroutine 1 [running]:
main.main()
/tmp/sandbox881512815/prog.go:41 +0x2ea
Here, nothing is read into the buffer as Close() method is called before any read operation so no content is read and only error is thrown here.
Similar Reads
Go Tutorial Go or you say Golang is a procedural and statically typed programming language having the syntax similar to C programming language. It was developed in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson at Google but launched in 2009 as an open-source programming language and mainly used in Google
2 min read
Go Programming Language (Introduction) Go is a procedural programming language. It was developed in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson at Google but launched in 2009 as an open-source programming language. Programs are assembled by using packages, for efficient management of dependencies. This language also supports env
11 min read
time.Sleep() Function in Golang With Examples In Go language, time packages supplies functionality for determining as well as viewing time. The Sleep() function in Go language is used to stop the latest go-routine for at least the stated duration d. And a negative or zero duration of sleep will cause this method to return instantly. Moreover, t
3 min read
Learn Free Programming Languages In this rapidly growing world, programming languages are also rapidly expanding, and it is very hard to determine the exact number of programming languages. Programming languages are an essential part of software development because they create a communication bridge between humans and computers. No
9 min read
Golang Tutorial - Learn Go Programming Language This Golang tutorial provides you with all the insights into Go Language programming, Here we provide the basics, from how to install Golang to advanced concepts of Go programming with stable examples. So, if you are a professional and a beginner, this free Golang tutorial is the best place for your
10 min read
strings.Contains Function in Golang with Examples strings.Contains Function in Golang is used to check the given letters present in the given string or not. If the letter is present in the given string, then it will return true, otherwise, return false. Syntax:Â func Contains(str, substr string) bool Here, str is the original string and substr is t
2 min read
Interfaces in Golang In Go, an interface is a type that lists methods without providing their code. You canât create an instance of an interface directly, but you can make a variable of the interface type to store any value that has the needed methods.Exampletype Shape interface { Area() float64 Perimeter() float64}In t
3 min read
Top 10 Golang Project Ideas with Source Code in 2025 Golang, or Go, a programming language was created by Google. It's widely used for building different kinds of applications like websites and cloud services. The fastest way to master this language is by building projects related to it. This article introduces 10 beginner-friendly to medium-difficult
8 min read
fmt.Sprintf() Function in Golang With Examples In Go language, fmt package implements formatted I/O with functions analogous to C's printf() and scanf() function. The fmt.Sprintf() function in Go language formats according to a format specifier and returns the resulting string. Moreover, this function is defined under the fmt package. Here, you
2 min read
Top 10 Golang Frameworks in 2025 Golang (or Go) is an open-source compiled programming language that is used to build simple, systematic, and secure software. It was designed by Google in the year 2007 and has been readily adopted by developers all over the world due to its features like memory safety, structural typing, garbage co
9 min read