Senior
func revert(nums []int) { // 1 2 3 4 => 4 3 2 1 } func main() { a := []int{1,2,3,4,5} revert(a) fmt.Println(a) } func revert(nums []int) { // 1 2 3 4 => 4 3 2 1 l, r := 0, len(nums)-1 for l < r { nums[l], nums[r] = nums[r], nums[l] l++ r-- } } func main() { a := []int{1,2,3,4,5} revert(a) fmt.Println(a) }
sobes.tech KI
Antwort von AI
Im präsentierten Code nimmt die Funktion revert einen Slice nums und kehrt die Reihenfolge der Elemente um, indem sie zwei Zeiger verwendet — einen vom Anfang und einen vom Ende des Slices. Solange der linke Zeiger kleiner ist als der rechte, werden die Elemente getauscht und die Zeiger bewegen sich aufeinander zu.
Beispielcode in Go:
package main
import "fmt"
func revert(nums []int) {
l, r := 0, len(nums)-1
for l < r {
nums[l], nums[r] = nums[r], nums[l]
l++
r--
}
}
func main() {
a := []int{1, 2, 3, 4, 5}
revert(a)
fmt.Println(a) // Ausgabe: [5 4 3 2 1]
}
Da Slices in Go per Referenz übergeben werden, spiegeln Änderungen innerhalb der Funktion die ursprüngliche Slice wider, was die Ausgabe zeigt.