将 []net.Conn 传递给 io.MultiWriter
Passing []net.Conn to 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)
}
}
但问题是,我必须在 io.MultiWriter
中指定每个 net.Conn
索引,这将是一个问题,因为切片大小是动态的。
当我尝试另一种方法将 []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
.
谢谢。
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...)
我有很多 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)
}
}
但问题是,我必须在 io.MultiWriter
中指定每个 net.Conn
索引,这将是一个问题,因为切片大小是动态的。
当我尝试另一种方法将 []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
.
谢谢。
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...)