如何将 [][]byte 转换为 []byte?

How do I convert [][]byte to []byte?

我有一个函数可以拆分数据和 returns 切片的子切片:

(buf []byte, lim int) [][]byte

显然我会收到一个错误:

n, err = out.Write(split(buf[:n], 100))

错误:

cannot convert split(buf[:n], 100) (type [][]byte) to type []byte

如何将 [][]byte 转换为 []byte

根据@Wishwa Perera 编辑:https://play.golang.org/p/nApPAYRV4ZW

由于您将 buf 拆分为 chunks,因此您可以通过遍历 split.

的结果将它们单独传递给 Write
for _, chunk := range split(buf[:n], 100) {
    if _, err := out.Write(chunk); err != nil {
        panic(err)
    }
}

如果 outnet.Conn 就像你的另一个问题一样,那么使用 net.Buffers 来写 [][]byte.

b := net.Buffers(split(buf[:n], 100))
_, err := b.WriteTo(out)
if err != nil {
   panic(err)
}