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 AI

Απάντηση από AI

Στον παρουσιασμένο κώδικα, η συνάρτηση revert λαμβάνει ένα τμήμα nums και αντιστρέφει τη σειρά των στοιχείων, χρησιμοποιώντας δύο δείκτες — έναν από την αρχή και έναν από το τέλος του τμήματος. Όσο ο αριστερός δείκτης είναι μικρότερος από τον δεξιό, τα στοιχεία ανταλλάσσονται και οι δείκτες κινούνται ο ένας προς τον άλλο.

Παράδειγμα κώδικα σε 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) // Έξοδος: [5 4 3 2 1]
}

Επειδή τα slices στο Go περνάνε με αναφορά, οι αλλαγές μέσα στη συνάρτηση αντικατοπτρίζονται στο αρχικό slice, όπως φαίνεται και στην έξοδο.