【发布时间】:2020-02-09 19:20:57
【问题描述】:
我需要创建一个可以满足“WriteCloser”接口的ioutil.Discard 等价物。通过谷歌搜索我想出了
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,真是太好了。
【问题讨论】:
-
我认为,这已经足够好了,因为这正是
NopCloser在io.Reader的标准库中实现的方式。 -
谢谢你,这让我相信这可能不会太不雅!