У меня есть группа *io.PipeWriter
и вы хотите сделать мультивитер на основе всех этих автопилотов в функции. Поэтому я называю функцию что-то вродеПередача [] * io.PipeWriter to io.MultiWriter
func copyToWriters(reader *bufio.Reader, errs chan error, writers []*io.PipeWriter) {
for _, writer := range writers {
defer writer.Close()
}
mw := io.MultiWriter(writers)
_, err := io.Copy(mw, reader)
if err != nil {
errs <- err
}
}
Я называю этот метод с аргументами copyToWriters(reader, errs, []*io.PipeWriter{w1, w2})
Но это говорит cannot use writers (type []*io.PipeWriter) as type []io.Writer in argument to io.MultiWriter
. Но если я меняю io.MultiWriter(writers)
на io.MultiWriter(writers[0],writers[1])
это работает. Как я могу заставить существующую функцию работать, не переписывая авторов отдельно.
@Volker вы можете дать причину? поскольку '* io.PipeWriter' реализует интерфейс' Writer', представляется законным использовать '* io.PipeWriter' вместо' io.PipeWriter': https://golang.org/pkg/io/#PipeWriter – ymonad
почему downvote? – Vishnu
A, извините, вы правы, PipeWriter не является интерфейсом. Забудь это. – Volker