当您需要将相同的输出写入多个目标时,内置包中可以提供帮助。本文展示了如何同时实现多个目标的写入。
一次写入多个writers
Golang 版本
1.12.1
前言
当您需要将相同的输出写入多个目标时,内置包中可以提供帮助。本文展示了如何同时实现多个目标的写入。
实现
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())
}
$ go run main.go
Content of buffer: Hello, Go is awesome!
原理
io
包中包含MultiWriter
函数它具有可变参数的Writers
。 当调用Writer
上的Write
方法时,数据将写入所有底层Writer
。