Sobes.tech
Middle+

Hauptpaket importiere "fmt" func subis(is []int) []int { return append(is, 5) } func main() { is := []int{1, 2, 3, 4} subis(is[2:3]) fmt.Println(is) }

sobes.tech KI

Antwort von AI

In diesem Code passiert Folgendes:

is := []int{1, 2, 3, 4}
subis(is[2:3])
fmt.Println(is)

is[2:3] ist ein Slice, das nur ein Element enthält: 3.

Die Funktion subis nimmt ein Slice is []int und gibt ein neues Slice zurück, das durch Hinzufügen der Zahl 5 zum ursprünglichen Slice mittels append entsteht.

Im main-Teil wird das Ergebnis des Aufrufs von subis jedoch nicht neu zugewiesen, daher ändert sich das ursprüngliche Slice is nicht.

Die Ausgabe lautet:

[1 2 3 4]

Wenn wir eine Zuweisung machen würden, z.B.:

is = subis(is[2:3])

würde is zu einem Slice [3 5] werden.

Daher ändert sich is im aktuellen Code nicht, weil das Ergebnis von append nicht gespeichert wird.