Go's append should consume the input slice

If a slice has capacity then appending to it will alias the input and output slices. This can cause subtle and difficult to diagnose bugs.