Sobes.tech
Junior — Middle

Wie kann man die Größe des Segments, das an eine Funktion in einer Programmiersprache übergeben wird, erhöhen?

sobes.tech KI

Antwort von AI

In Go ist ein Slice eine Struktur, die einen Zeiger auf ein Array, eine Länge und eine Kapazität enthält. Wenn du die Größe eines an eine Funktion übergebenen Slices erhöhen möchtest, kannst du Folgendes tun:

  • Den Slice per Wert übergeben, aber innerhalb der Funktion einen neuen Slice mit erhöhter Länge oder Kapazität mit der Funktion append erstellen.
  • Wenn du den Slice selbst ändern möchtest (z.B. die Länge erhöhen) und die Änderungen außerhalb sichtbar sein sollen, kannst du einen Zeiger auf den Slice (*[]T) übergeben, sodass du innerhalb der Funktion den Slice neu zuweisen kannst.

Beispiel, um einen Slice innerhalb einer Funktion zu erweitern und einen neuen Slice zurückzugeben:

func extendSlice(s []int, n int) []int {
    // Füge n Null-Elemente hinzu
    s = append(s, make([]int, n)...) 
    return s
}

func main() {
    s := []int{1, 2, 3}
    s = extendSlice(s, 2)
    fmt.Println(s) // [1 2 3 0 0]
}

Wenn die Funktion den Slice ohne Rückgabe ändern soll, kannst du einen Zeiger verwenden:

func extendSlicePtr(s *[]int, n int) {
    *s = append(*s, make([]int, n)...) 
}

func main() {
    s := []int{1, 2, 3}
    extendSlicePtr(&s, 2)
    fmt.Println(s) // [1 2 3 0 0]
}

Auf diese Weise musst du, um die Größe des Slices in einer Funktion zu erhöhen, entweder einen neuen Slice zurückgeben oder einen Zeiger auf den Slice übergeben.