スプライスを実装するための次のコードがあります (つまり、完全なバイト スライス、別のバイト スライス部分、部分で上書きしたい完全な位置を表す 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 バイト スライスの結合を行います。部分によって上書きされないフルの最初の部分、すべての部分、そしてフルの残りの部分です。これを行うためのより良い/より慣用的な方法はありますか? 標準ライブラリでこれを実装するメソッドを見つけることができませんでした。