Sobes.tech
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.