gpt4 book ai didi

Golang - 丢弃为 WriteCloser

转载 作者:行者123 更新时间:2023-12-01 20:22:58 25 4
gpt4 key购买 nike

我需要创建一个等价的 ioutil.Discard可以满足“WriteCloser”接口(interface)。通过一些谷歌搜索,我想出了

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)
}

Go playground link here

有没有更惯用的方式来做到这一点?

背景:一些标准库方法返回一个WriteCloser,如 net/smtp.Data .在实现自动化测试时,能够执行这样的功能,同时将它们的输出发送到 Discard,这真是太好了。

最佳答案

我拿了bereal的提示并查看了NopCloser .该方法效果很好,并且在围绕需要 WriteCloser 的库构建的测试函数中很有用。 .

我将类型重命名为 myWriteCloser因为它可以用来宣传“真正的”作家,例如 &bytes.Buffer ,以及特殊的系统丢弃写入器。

type myWriteCloser struct {
io.Writer
}

func (myWriteCloser) Close() error {
return nil
}

关于Golang - 丢弃为 WriteCloser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60140422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com