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_Concurrency - Fatal编程技术网

Go 如何处理范围的并发映射

Go 如何处理范围的并发映射,go,concurrency,Go,Concurrency,我想为范围映射创建一个值,以便结果可以是偏移量、行先获取、行仅获取 但由于并发,我的代码可以变成偏移量,只能行,行先取 如何保持偏移量、行先取、行只取等顺序?或者可能会阻止并发 已经尝试使用WaitGroup,wg.Add wg.Done wg.Wait,但仍然无法工作 mapPagination := map[string]interface{}{`OFFSET`: offset, `ROWS FETCH FIRST`: limit, `ROW ONLY:keyOnly`: ``} for

我想为范围映射创建一个值,以便结果可以是偏移量、行先获取、行仅获取

但由于并发,我的代码可以变成偏移量,只能行,行先取

如何保持偏移量、行先取、行只取等顺序?或者可能会阻止并发

已经尝试使用WaitGroup,wg.Add wg.Done wg.Wait,但仍然无法工作

mapPagination := map[string]interface{}{`OFFSET`: offset, `ROWS FETCH FIRST`: limit, `ROW ONLY:keyOnly`: ``}

for kPagination, vPagination := range pagination {
    if strings.Contains(kPagination, "keyOnly") {
        kPagination = strings.Replace(kPagination, ":keyOnly", "", 1)
        slicesPagination = append(slicesPagination, fmt.Sprintf("%s", kPagination))
    } else {
        slicesPagination = append(slicesPagination, fmt.Sprintf("%s $%s", kPagination, ParseString(index)))
        values = append(values, vPagination)
    }

    index++
}

您没有并发问题。地图中键的顺序无法保证。如果需要有序对,请使用结构切片:

type pair struct {
   Key string
   Value string
}

mapPagination := []pair{{Key:`OFFSET`,Value:offset}, 
   {Key:`ROWS FETCH FIRST`,Value: limit},
   {Key:`ROW ONLY:keyOnly`}}