如何将 [][]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)
}
}
如果 out
是 net.Conn
就像你的另一个问题一样,那么使用 net.Buffers 来写 [][]byte
.
b := net.Buffers(split(buf[:n], 100))
_, err := b.WriteTo(out)
if err != nil {
panic(err)
}
我有一个函数可以拆分数据和 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)
}
}
如果 out
是 net.Conn
就像你的另一个问题一样,那么使用 net.Buffers 来写 [][]byte
.
b := net.Buffers(split(buf[:n], 100))
_, err := b.WriteTo(out)
if err != nil {
panic(err)
}