go基础库之一次写入多个writers

当您需要将相同的输出写入多个目标时,内置包中可以提供帮助。本文展示了如何同时实现多个目标的写入。

一次写入多个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