go - Golang - 丢弃为 WriteCloser
问题描述
我需要创建一个等效的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,这真是太好了。
解决方案
我拿着bereal的小费看了看NopCloser
。该方法效果很好,并且在围绕需要WriteCloser
.
我重命名了该类型myWriteCloser
,因为它可以用来提升“真正的”编写器,例如&bytes.Buffer
,以及特殊的系统丢弃编写器。
type myWriteCloser struct {
io.Writer
}
func (myWriteCloser) Close() error {
return nil
}
推荐阅读
- reactjs - 使用 react 向 api 发送请求
- python - 根据python中的绝对最小值过滤嵌套列表
- angular - 从 Angular 9 传递到 ASP.NET Core 的 Web API 后,日期变为落后一天
- javascript - 如何通过javascript获取部门ID并通过ajax发送到php文件?
- python - Pywinauto 未执行
- apache-flink - Apache Flink 资源规划最佳实践
- rasa - 未在自定义操作中设置槽值
- java - 如何在android中分别调整左右音量平衡?
- python - 当脚本从 Cron Job 运行时如何在脚本目录中打开文件
- php - 在没有 brew 的 macOS Sierra 上安装 PHP 7.4?