将 []net.Conn 传递给 io.MultiWriter

我有很多,net.Conn我想实现多作家。所以我可以将数据发送到每个可用net.Conn的。


我目前的方法是使用io.MultiWriter.


func route(conn, dst []net.Conn) {

    targets := io.MultiWriter(dst[0], dst[1])


    _, err := io.Copy(targets, conn)

    if err != nil {

        log.Println(err)

    }

}

但问题是,我必须指定每个net.Conn索引io.MultiWriter,这将是一个问题,因为切片大小是动态的。


[]net.Conn当我通过传递给尝试另一种方法时io.MultiWriter,如下面的代码


func route(conn, dst []net.Conn) {

    targets := io.MultiWriter(dst...)


    _, err := io.Copy(targets, conn)

    if err != nil {

        log.Println(err)

    }

}

出现错误“无法将镜像([]net.Conn 类型的变量)用作 io.MultiWriter 参数中的 []io.Writer 值”


有没有正确的方法来处理这种情况?所以我可以将net.Conn切片传递给io.MultiWriter。


谢谢你。


慕桂英546537
浏览 77回答 1
1回答

慕少森

io.MultiWriter()有一个类型的参数...io.Writer,所以你只能传递一个类型的片段[]io.Writer。所以首先创建一个正确类型的切片,将net.Conn值复制到它,然后像这样传递它:ws := make([]io.Writer, len(dst)) for i, c := range dst {     ws[i] = c } targets := io.MultiWriter(ws...)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go