Как преобразовать ломтик в массив фиксированного размера?
Я хочу преобразовать массив фиксированного размера из среза:
func gen(bricks []Brick) {
if len(bricks) == 16 {
if check(Sculpture{bricks}) {
var b [16]Brick = bricks[0:16];
}
}
}
Но это приводит к:
cannot use bricks[0:16] (type []Brick) as type [16]Brick in assignment
Как преобразовать срез в массив фиксированного размера?
Ответы
Ответ 1
Вам нужно использовать copy
:
slice := []byte("abcdefgh")
var arr [4]byte
copy(arr[:], slice[:4])
fmt.Println(arr)
Как отмечают Aedolon, вы также можете просто использовать
copy(arr[:], slice)
поскольку копия всегда будет копировать минимум len(src)
и len(dst)
байтов.