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]
}