如何将切片转换为固定大小的数组? [英] How to convert slice to fixed size array?

查看:23
本文介绍了如何将切片转换为固定大小的数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要从切片转换固定大小的数组:

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

如何将切片转换为固定大小的数组?

推荐答案

编辑:从GO1.17开始,您可以使用对切片到数组转换的新支持:https://tip.golang.org/ref/spec#Conversions_from_slice_to_array_pointer

GO 1.16及更低版本的上一个答案:

您需要使用copy

slice := []byte("abcdefgh")

var arr [4]byte

copy(arr[:], slice[:4])

fmt.Println(arr)

正如Aedolon所说,您也可以只使用

copy(arr[:], slice)

As Copy始终只复制最小len(src)len(dst)字节。

这篇关于如何将切片转换为固定大小的数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆