io.Writer interface

The inverse of io.Reader is io.Writer interface:

  1. type Writer interface {
  2. Write(p []byte) (n int, err error)
  3. }

Compared to io.Reader, since you no need to consider io.EOF error, the process of Write method is simple:

(1) err == nil: All the data in p is written successfully;
(2) err != nil: The data in p is partially or not written at all.

Let’s see an example:

  1. package main
  2. import (
  3. "log"
  4. "os"
  5. )
  6. func main() {
  7. f, err := os.Create("test.txt")
  8. if err != nil {
  9. log.Fatal(err)
  10. }
  11. defer f.Close()
  12. if _, err = f.Write([]byte{'H', 'E', 'L', 'L', 'O'}); err != nil {
  13. log.Fatal(err)
  14. }
  15. }

After executing the program, the test.txt is created:

  1. # cat test.txt
  2. HELLO