The Go Programming Language Specification
Appending to and copying slices
The variadic function append
appends zero or more values x
to s
of
type S
, which must be a slice type, and returns the resulting slice,
also of type S
. The values x
are passed to a parameter of type ...T
where T
is the element type of S
and the respective parameter passing
rules apply.
append(s S, x ...T) S // T is the element type of S
Passing arguments to ...
parameters
If the final argument is assignable to a slice type []T
, it may be
passed unchanged as the value for a ...T
parameter if the argument is
followed by ...
.
You need to use []T...
for the final argument.
For your example, with the final argument slice type []byte
, the argument is followed by ...
,
package main
import "fmt"
func main() {
one := make([]byte, 2)
two := make([]byte, 2)
one[0] = 0x00
one[1] = 0x01
two[0] = 0x02
two[1] = 0x03
fmt.Println(append(one[:], two[:]...))
three := []byte{0, 1}
four := []byte{2, 3}
five := append(three, four...)
fmt.Println(five)
}
Playground: https://play.golang.org/p/2jjXDc8_SWT
Output:
[0 1 2 3]
[0 1 2 3]
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…