Heim > Backend-Entwicklung > Golang > Wie kann ich ein Go-Slice in einer Funktion ändern und die Änderungen im Original-Slice widerspiegeln?

Wie kann ich ein Go-Slice in einer Funktion ändern und die Änderungen im Original-Slice widerspiegeln?

Linda Hamilton
Freigeben: 2024-12-19 14:07:16
Original
447 Leute haben es durchsucht

How Can I Modify a Go Slice in a Function and Have the Changes Reflected in the Original Slice?

Slices als Referenz übergeben, um das ursprüngliche Slice zu ändern

In Go werden Slices als Wert übergeben, was bedeutet, dass ein Slice innerhalb einer Funktion geändert wird hat keinen Einfluss auf das Original-Slice außerhalb der Funktion. Um diese Einschränkung zu überwinden, können Sie einen Zeiger auf das Slice übergeben, sodass die Funktion das ursprüngliche Slice per Referenz ändern kann.

Übergabe eines Zeigers an ein Slice

An Um einen Zeiger auf ein Slice zu übergeben, muss die Funktionssignatur einen Zeigertyp für das Slice enthalten Parameter:

func modifySlice(slice *[]int) {
    *slice = append(*slice, 4)
}
Nach dem Login kopieren

Beispiel:

nums := []int{1, 2, 3}
modifySlice(&nums)
fmt.Println(nums) // Prints [1, 2, 3, 4]
Nach dem Login kopieren

In diesem Beispiel nimmt die Funktion „modifySlice“ einen Zeiger auf ein Segment von Ganzzahlen. Innerhalb der Funktion dereferenziert der Sternchen (*)-Operator den Zeiger, um das ursprüngliche Slice zu erhalten, und hängt dann 4 an das Slice an.

Zurückgeben eines geänderten Slice

Ein anderer Ansatz besteht darin, das geänderte Slice von der Funktion zurückzugeben:

nums := []int{1, 2, 3}

func modifyAndReturnSlice(slice []int) []int {
    return append(slice, 4)
}

nums = modifyAndReturnSlice(nums)
fmt.Println(nums) // Prints [1, 2, 3, 4]
Nach dem Login kopieren

Dieser Ansatz ist in Go idiomatisch und erfordert keine Übergabe von a Zeiger auf das Slice.

Auswahl des geeigneten Ansatzes

Die Wahl zwischen der Übergabe eines Zeigers auf ein Slice oder der Rückgabe eines modifizierten Slice hängt von den spezifischen Anforderungen Ihrer Funktion ab Codestruktur. Die Übergabe eines Zeigers ist oft nützlich, wenn Sie mehrere Slices iterieren und ändern müssen oder wenn die Änderungen komplex sind. Die Rückgabe eines geänderten Slice ist vorzuziehen, wenn die Funktion nur ein einzelnes Slice ändern muss und die Änderungen unkompliziert sind.

Das obige ist der detaillierte Inhalt vonWie kann ich ein Go-Slice in einer Funktion ändern und die Änderungen im Original-Slice widerspiegeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage