为了账号安全,请及时绑定邮箱和手机立即绑定

Go(语言)从切片中获取数组

Go(语言)从切片中获取数组

Go
潇潇雨雨 2021-06-23 02:09:29
如果我用(例如)创建一个切片mySlice := make([]int, 5, 10)然后我假设一个类型的数组[10]int是静默创建的,并且我收到一个“看到”前 5 个整数的切片。(对吗?Go 文档并没有用这种方式表达它,但是由于切片必须始终在某处有一个底层数组,我不知道它怎么可能是其他方式。)所以我相信以上是简写:var myArray [10]int mySlice := myArray[0:5]但是当我使用第一种方法时,我没有数组的句柄。有没有办法从切片中获取它?
查看完整描述

2 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

如果不使用不安全的指针技巧,就无法从切片中获取数组。


查看完整回答
反对 回复 2021-06-28
?
智慧大石

TA贡献1946条经验 获得超3个赞

我不确定你想要什么样的“句柄”,但数组在 Go 中是按值传递的。因此,如果您有一个将数组作为参数的函数,则只需将切片中的数据复制到数组中,然后传递数组即可。当您将数组传递给函数时,无论如何都会复制该数组。

如果您自己的代码想要处理数组,那么它可以对切片执行所有操作,就像处理数组一样。

没有 unsafe 你唯一不能做的就是创建一个指向数组的指针——但你可以用 unsafe 轻松做到这一点:

arrayPtr := (*[10]int)(unsafe.Pointer(&mySlice[0]))


查看完整回答
反对 回复 2021-06-28
  • 2 回答
  • 0 关注
  • 264 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信