【问题标题】:Golang Reslicing IssueGolang Reslicing 问题
【发布时间】:2017-12-05 06:49:54
【问题描述】:

我目前正在循环一个切片并每次删除第一个元素。

为此,我使用以下代码:

mySlice = append(mySlice[1:])

前几次迭代一切正常,但在后面的迭代中,一些元素被删除,一些元素被重复:

之前:

40.917
37.6384
41.2783
38.1481

之后:

40.917
37.6384
41.2783
37.6384
41.2783
38.1481

我为所有迭代打印了切片的lencap,但它们似乎在每次迭代中按预期递减1

更新:

我发现了问题:似乎即使我只是将切片传递给另一个函数以创建本地切片,但如果我操作本地切片,我的原始切片也会受到影响(D'oh!)。

去游乐场链接:https://play.golang.org/p/ca57tgusXD

【问题讨论】:

    标签: loops go append slice


    【解决方案1】:

    我终于明白了!

    我需要使用copy 函数,而不是使用:= 初始化我的本地切片。

    去游乐场链接:https://play.golang.org/p/N9RzHOibdI

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-01
      • 2015-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      相关资源
      最近更新 更多