为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕桂英546537 2022-11-23 15:55:57

我有很多,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。


谢谢你。


查看完整描述

1 回答

?
慕少森

TA贡献1715条经验 获得超9个赞

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


查看完整回答
反对 回复 2022-11-23

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信