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.
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.
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.
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.