我需要创建一个等效的ioutil.Discard来满足“WriteCloser”接口。通过一些谷歌搜索,我想出了
package main
import (
"io"
"io/ioutil"
"strings"
"fmt"
)
type discardCloser struct {
io.Writer
}
func (discardCloser) Close() error {
return nil
}
func main() {
src := strings.NewReader("Hello world")
dst := discardCloser{Writer: ioutil.Discard}
count, err := io.Copy(dst, src)
fmt.Println(count, err)
err = dst.Close()
fmt.Println(err)
}
有没有更惯用的方式来做到这一点?
背景:一些标准库方法返回一个 WriteCloser,例如net/smtp.Data。在实现自动化测试时,能够执行这样的功能,同时将它们的输出发送到 Discard,这真是太好了。