如何在Go中分配运行时大小的数组?
以下代码是非法的:
n := 1
var a [n]int
您会收到消息prog.go:12: invalid array bound n
(或类似消息),但是效果很好:
const n = 1
var a [n]int
问题是,我可能要等到运行时才能知道我想要的数组的大小。
答案是您不直接分配一个 数组 ,而是 在创建 slice 时 让Go为您分配一个 数组 。
内置的函数make([]T, length, capacity)
创建了一个切片 和它后面的阵列 ,并且没有(傻)上的值编译时间常数-
限制性length
和capacity
。正如Go语言规范中所说:
使用创建的切片
make
始终分配一个新的隐藏数组,返回的切片值将引用该数组。
所以我们可以这样写:
n := 12
s := make([]int, n, 2*n)
并为数组分配了size 2*n
,并将s
切片初始化为它的前半部分。
我不确定为什么Go不能[n]int
直接分配数组,因为您可以间接进行分配,但是答案很明确:“ 在Go中,多数时候使用切片而不是数组。 ”
问题内容: 我试过函数,但它给出了声明的值。该函数给出一个错误。 码: 输出在这里,我需要数组中的全部项目(即)。 问题答案: Go中的数组是固定大小的:在Go中创建数组后,以后就无法更改其大小。这是这样一种程度,即一个阵列的长度是阵列类型的一部分(这意味着类型和2层不同的类型)。就是说,某种数组类型的值的长度始终是相同的,并且由其类型决定。例如,类型为array的值的长度始终为,(可以使用内置函
问题内容: 我正在尝试将固定大小的数组转换为可变大小的数组(切片): 但是编译器抛出错误: 我应该如何转换? 问题答案: 使用让您在阵列上切片。另请参阅此博客文章,以获取有关数组和切片的更多信息。
问题内容: 我来自C ++背景,并且习惯于使用此类的东西。假设我想要这些的动态数组: 这样做的标准方法是什么? 摘要非常有用 问题答案: 使用内置 例: 有关附加的更多信息,请参考规范。
我的问题是下一个:我知道mediaformat.key_i_frame_interval是I帧将要出现的时间间隔(以秒为单位)(整数)。 因此,如果我将值设为1,帧速率为15,GOP大小将为15,如果帧速率为30,GOP大小将为30。 因此,在参数mediaformat.key_i_frame_interval是一个整数的情况下(不能给出值0.5作为使用30帧率的15帧gopsize),是否有任何
我一直在使用SE上发布的问题的一个极好的答案来确定分区的数量,以及跨数据帧的分区分布需要知道数据帧Spark中的分区详细信息 有人能帮我扩展答案来确定数据帧的分区大小吗? 谢谢
有人能给我解释一下上面这一行的记忆地图吗。它将有多少个对象和引用?