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

时间:2015-05-17 10:04:01

标签: arrays go slice

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

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

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

2 个答案:

答案 0 :(得分:45)

您需要使用copy

slice := []byte("abcdefgh")

var arr [4]byte

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

fmt.Println(arr)

正如Aedolon所说,你也可以使用

copy(arr[:], slice)

因为副本始终只复制len(src)len(dst)字节的最小值。

答案 1 :(得分:1)

我找到了一种无需分配更多空间即可解决问题的方法-定义一个与slice具有相同结构的新结构,并接收unsafe.Pointer。

  const x = _request.pipe(proxyReq);
  x.end();

  x.on("response",(res)=>{
    const routedResp = res.pipe(response);
    routedResp.setHeader("content-type","application/json");
  })

结果显示如下: result