【发布时间】:2012-11-24 18:45:40
【问题描述】:
我有以下代码用于实现拼接(即,给定一个完整的字节切片、另一个字节切片部分和一个表示我想用部分覆盖的完整位置的 int pos):
package main
import (
"fmt"
"bytes"
)
func main() {
full := []byte{0,0,0,0,0,0,0}
part := []byte{1,1,1}
newFull1 := splice(full, part, 2)
fmt.Println(newFull1)
// [0 0 1 1 1 0 0]
newFull2 := splice(full, part, 3)
fmt.Println(newFull2)
// [0 0 0 1 1 1 0]
}
func splice(full []byte, part []byte, pos int) []byte {
return bytes.Join([][]byte{full[:pos], part, full[len(full[:pos])+len(part):]}, []byte{})
}
基本上,我的方法执行 3 字节切片的连接:完整的第一部分不会被部分覆盖,全部部分,然后是完整的剩余部分。有没有更好/更惯用的方法来做到这一点?我无法在标准库中找到实现此功能的方法。
【问题讨论】:
-
我觉得不错。我认为您不会找到更简洁的方法来完成此操作。不过,您可能想要添加错误检查。 pos 可能超出范围。
标签: go