这是两个数据结构
result []byte
chunk [][]byte
“chunk”初始化如下
chunk := make([][]byte, 3)
for i := 0 ; i < 5; i++ {
chunk[i] = data //data is a byte array
}
如何将chunks
连接到result[]
?
实施例
如果块是"123", "456", "789"
,则结果应为"123456789"
答案 0 :(得分:4)
简单。
l := 0
for _, v := range chunks {
l += len(v)
}
result := make([]byte, 0, l)
for _, v := range chunks {
result = append(result, v...)
}
第一个循环将所有长度相加,分配新切片,然后使用另一个循环将旧切片复制到新切片中。
虽然有一种更简单的方法可以使用bytes
包中的函数来处理这种特殊情况,但此解决方案可以使用任何类型的切片。
答案 1 :(得分:3)
您可以使用标准库中的"bytes".Join
函数:
result := bytes.Join(chunks, nil)
第一个参数是切片([][]byte
),第二个参数是分隔符(也就是胶水)。在您的情况下,分隔符是一个空的字节切片(nil
也可以)。