Sobes.tech
Middle+

Aufgabe: Was gibt der Code aus? ```go package main import "fmt" func main() { a := []int{1, 2, 3, 4, 5} b := a[:2] b = append(b, 100) fmt.Println(a, b) } ```

sobes.tech KI

Antwort von AI

Code:

package main

import "fmt"

func main() {
    a := []int{1, 2, 3, 4, 5}
    b := a[:2]       // b verweist auf die ersten beiden Elemente von a: [1, 2]
    b = append(b, 100) // fügt 100 zum Slice b hinzu
    fmt.Println(a, b)
}

Analyse:

  • Anfangs ist a = [1, 2, 3, 4, 5]
  • b := a[:2] — das Slice b enthält [1, 2], und seine Kapazität ist 5 (von 0 bis zum Ende von a)
  • append(b, 100) fügt das Element 100 zum Slice b hinzu. Da die Kapazität von b eine Erweiterung ohne neue Speicherzuweisung erlaubt, wird das Element 100 in a[2] geschrieben, was das ursprüngliche Array a ändert.

Nach dem Append:

  • a wird zu [1, 2, 100, 4, 5]
  • b wird zu [1, 2, 100]

Ausgabe:

[1 2 100 4 5] [1 2 100]

Das Element a[2] hat sich von 3 auf 100 geändert, weil b und a ein gemeinsames zugrunde liegendes Array teilen.