范围运营商是否保证订单?

时间:2018-02-19 02:22:04

标签: go

让我们说,我将结构连接成一个sampler2D[]调用的数组。读取过程中范围运算符是否保证与元素添加到数组的顺序相同?

int

规格说什么?我要计算钱,所以我需要确定它是有序的。

2 个答案:

答案 0 :(得分:3)

对于切片,它由spec

保证
  

对于数组,指向数组的指针或切片值a,索引迭代值按递增顺序生成,从元素索引0开始。如果存在最多一个迭代变量,则范围循环生成从0开始的迭代值到len(a)-1并且不索引到数组或切片本身。对于nil切片,迭代次数为0。

参考:

答案 1 :(得分:0)

你没有“连接到带有append()的数组” - 你将()附加到切片([3] S vs. [] S)。

  

如果切片的容量不足以容纳附加值,   append分配一个适合的新的,足够大的底层数组   现有的切片元素和附加值。除此以外,   append重新使用底层数组。

因此,原始数组可能不包含所有附加的元素。