Мне нужно было создать эквивалент ioutil.Discard , который может удовлетворить интерфейс «WriteCloser». С небольшим количеством Googling я придумал
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 ссылка на игровую площадку здесь
Есть ли более идиоматический c способ сделать это?
Справочная информация: некоторые стандартные библиотечные методы возвращают WriteCloser, например net / smtp.Data . При реализации автоматических тестов было бы хорошо иметь возможность выполнять такие функции, отправляя их вывод в Discard.