我有很多,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贡献2019条经验 获得超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...)
- 1 回答
- 0 关注
- 73 浏览
添加回答
举报
0/150
提交
取消