2017-07-01 2 views
0

Ich bin derzeit Schleife über eine Scheibe und das Entfernen des ersten Elements jedes Mal.Golang Reslicing Problem

so zu tun, ich den folgenden Code verwenden:

mySlice = append(mySlice[1:]) 

Alles geht für die ersten paar Iterationen in Ordnung, aber auf späteren, bekommen einige Elemente entfernt und einige dupliziert erhalten:

Vor :

40.917 
37.6384 
41.2783 
38.1481 

Nach:

40.917 
37.6384 
41.2783 
37.6384 
41.2783 
38.1481 

Ich habe die len und cap der Scheibe für alle Iterationen gedruckt, aber sie scheinen für jede Iteration wie erwartet zu 1 zu dekrementieren.

UPDATE:

ich das Problem herausgefunden: Es scheint, dass, obwohl ich auf eine andere Funktion meine Scheibe am Übergang einfach eine lokale Scheibe zu schaffen, wenn ich die lokale Scheibe, meine ursprüngliche Scheibe wird betroffen manipulieren auch (D'oh!).

Go Spielplatz-Link: https://play.golang.org/p/ca57tgusXD

Antwort

0

Habe ich es endlich raus!

Ich musste die copy Funktion verwenden, anstatt meine lokalen Scheiben mit := zu initialisieren.

Gehen Spielplatz Link: https://play.golang.org/p/N9RzHOibdI