Pad a function with random bytes I'm writing a function to append 5-10 bytes (count is random) at the beginning of a byte array, and 5-10 random bytes at the end:

func padWithRandomBytes(b []byte) []byte {
    startBytes := make([]byte, 10-rand.Intn(5))
    endBytes := make([]byte, 10-rand.Intn(5))
    newSlice := make([]byte, len(startBytes)+len(b)+len(endBytes))
    copy(newSlice[:len(startBytes)], startBytes)
    copy(newSlice[len(startBytes):len(startBytes)+len(b)], b)
    copy(newSlice[len(startBytes)+len(b):], endBytes)
    return newSlice
}


This feels pretty inefficient. Is there a more intuitive way to write this in Go?
For example,

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func padWithRandomBytes(b []byte) []byte {
    s := 5 + rand.Intn(5+1)
    e := 5 + rand.Intn(5+1)
    r := make([]byte, s+len(b)+e)
    copy(r[s:], b)
    return r
}

func main() {
    rand.Seed(time.Now().UnixNano())
    b := []byte{1, 2, 3}
    fmt.Println(len(b), b)
    r := padWithRandomBytes(b)
    fmt.Println(len(r), r)
}


Output (random):

3 [1 2 3]
20 [0 0 0 0 0 0 0 0 1 2 3 0 0 0 0 0 0 0 0 0]

3 [1 2 3]
15 [0 0 0 0 0 0 1 2 3 0 0 0 0 0 0]