anotherSlice := theSlice
anotherSlice = append(anotherSlice, newEle)
fmt.Println(len(anotherSlice) == len(theSlice))
Dieses Snippet gibt false
aus. Warum?Eine Variable vom Referenztyp "Slice" einer anderen Variablen zuweisen, warum ändern sie sich nicht gleichzeitig?
Und hier sind einige andere Experimente:
package main
import "fmt"
func main() {
theSlice := []int{3,3,2,5,12,43}
anotherSlice := theSlice
fmt.Println(anotherSlice[3], theSlice[3])
anotherSlice[3] = anotherSlice[3]+2
fmt.Println(anotherSlice[3], theSlice[3])
anotherSlice = append(anotherSlice[:3], anotherSlice[4:]...)
fmt.Println(len(anotherSlice),len(theSlice))
}
Der Ausgang wie unten:
5 5
7 7
5 6
Program exited.
Ich versuchte etwas anderes, um die Länge zu schrumpfen, der Prozess wird in der Post aktualisiert. Ist das so, weil "anotherSlice" nach dem Schrumpfen auch die Kapazität auf 5 reduziert hat? –