- When you need to write the same output into more than one target, there is a helping hand available in the built-in package. This recipe shows how to implement writing simultaneously into multiple targets.
 
Create the multiwr.go file with the following content:
        package main
        import "io"
        import "bytes"
        import "os"
        import "fmt"
        func main() {
          buf := bytes.NewBuffer([]byte{})
          f, err := os.OpenFile("sample.txt", os.O_CREATE|os.O_RDWR,
                                os.ModePerm)
          if err != nil {
            panic(err)
          }
          wr := io.MultiWriter(buf, f)
          _, err = io.WriteString(wr, "Hello, Go is awesome!")
          if err != nil {
            panic(err)
          }
          fmt.Println("Content of buffer: " + buf.String())
        }
output:
sangam:golang-daily sangam$ go run multiwr.go
Content of buffer: Hello, Go is awesome!
sangam:golang-daily sangam$ 
Check the content of the created file: sample.txt#
      Hello, Go is awesome!
How it works...#
- The io package contains the MultiWriter function with variadic parameters of Writers.
 - When the Write method on the Writer is called, then the data is written to all underlying Writers.