首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Go中的slice获取数组(语言)

从Go中的slice获取数组(语言)
EN

Stack Overflow用户
提问于 2013-08-31 23:03:44
回答 2查看 174关注 0票数 2

如果我用(例如)创建一个切片

代码语言:javascript
复制
mySlice := make([]int, 5, 10)

然后我假设静默地创建了一个[10]int类型的数组,并且我收到了一个“看到”前5个int的片段。

(对吗?Go文档并不是这么写的,但是因为一个切片必须在某个地方有一个底层数组,所以我看不出还有什么其他的方法。)

因此,我相信以上是对以下内容的速记:

代码语言:javascript
复制
var myArray [10]int
mySlice := myArray[0:5]

但是当我使用第一种方法时,我没有数组的句柄。有没有办法从切片中获取它?

EN

回答 2

Stack Overflow用户

发布于 2013-08-31 23:49:05

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

票数 3
EN

Stack Overflow用户

发布于 2013-09-01 01:02:02

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

如果是你自己的代码想要处理数组,那么它可以像处理数组一样对切片做任何事情。

如果没有unsafe,你唯一不能做的事情就是创建一个指向数组的指针--但是你可以用unsafe轻松地做到这一点:

代码语言:javascript
复制
arrayPtr := (*[10]int)(unsafe.Pointer(&mySlice[0]))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18549500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档