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

将 []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贡献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...)


查看完整回答
反对 回复 2022-11-23
  • 1 回答
  • 0 关注
  • 73 浏览
慕课专栏
更多

添加回答

举报

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