Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 范围操作员是否保证顺序?_Go - Fatal编程技术网

Go 范围操作员是否保证顺序?

Go 范围操作员是否保证顺序?,go,Go,比方说,我通过一个追加调用将结构连接到一个数组中。读取过程中的range运算符能否保证元素添加到数组时的顺序相同 var array_of_structs []*some_struct_t build_array(&array_of_structs) for i,value := range array_of_structs { ..whatever, but I need `i` to be i=0,1,2... N in an ordered way } 说明书上怎么说?我

比方说,我通过一个追加调用将结构连接到一个数组中。读取过程中的range运算符能否保证元素添加到数组时的顺序相同

var array_of_structs []*some_struct_t
build_array(&array_of_structs)
for i,value := range array_of_structs {
    ..whatever, but I need `i` to be i=0,1,2... N in an ordered way
}

说明书上怎么说?我要计算钱,所以我需要确保它是订购的。

对于切片,它是由规格保证的

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

参考:


您不需要通过追加连接到一个数组中–您要追加到片[3]S vs.[]S

如果切片的容量不足以容纳附加值, append分配一个新的、足够大的基础数组,该数组适合 现有切片元素和附加值。否则 append重新使用基础数组


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

规范怎么说?阅读。@peterSO,这是谷歌的错,我在谷歌上搜索了一下,但没有得到值得注意的结果,/maps/上的范围是故意不确定排序的。