Ответ 1
Спецификация языка программирования Go
Добавление и копирование фрагментов
Функция variadic
append
добавляет ноль или более значенийx
кs
типаS
, который должен быть типом среза, и возвращает полученный срез, также типаS
Значенияx
передаются параметру типа...T
гдеT
- тип элементаS
и применяются соответствующие правила передачи параметров.
append(s S, x...T) S//T is the element type of S
Передача аргументов в
...
параметрыЕсли последний аргумент присваивается типу слайса
[]T
, он может быть передан без изменений в качестве значения параметра...T
если за аргументом следует...
Вам нужно использовать []T...
для последнего аргумента.
Для вашего примера, с последним аргументом slice type []byte
, за аргументом следует ...
,
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)
}
Детская площадка: https://play.golang.org/p/2jjXDc8_SWT
Выход:
[0 1 2 3]
[0 1 2 3]