Как преобразовать ломтик в массив фиксированного размера?

Я хочу преобразовать массив фиксированного размера из среза:

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) байтов.