Sobes.tech
Junior — Middle

Kann man Elemente zu einem Slice hinzufügen, das als Argument an eine Funktion übergeben wurde?

sobes.tech KI

Antwort von AI

Ja, es ist möglich, Elemente zu dem an die Funktion übergebenen Slice hinzuzufügen, aber es ist wichtig zu verstehen, dass in Go ein Slice eine Struktur ist, die einen Zeiger auf ein Array, eine Länge und eine Kapazität enthält.

Wenn Sie in der Funktion append verwenden und das Ergebnis einer lokalen Variablen zuweisen, wirken sich die Änderungen nicht auf den ursprünglichen Slice außerhalb der Funktion aus, es sei denn, Sie geben einen neuen Slice zurück oder übergeben einen Zeiger auf den Slice.

Beispiel:

func addElement(s []int) []int {
    s = append(s, 42) // Element hinzufügen
    return s
}

func main() {
    s := []int{1, 2, 3}
    s = addElement(s) // muss neu zugewiesen werden
    fmt.Println(s) // [1 2 3 42]
}

Wenn Sie den Slice innerhalb der Funktion ändern möchten, ohne ihn zurückzugeben, können Sie einen Zeiger übergeben:

func addElementPtr(s *[]int) {
    *s = append(*s, 42)
}

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