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 IA

Réponse de l'IA

Dans le code présenté, la fonction revert prend une tranche nums et inverse l'ordre des éléments, en utilisant deux pointeurs — un du début et un de la fin de la tranche. Tant que le pointeur gauche est inférieur au droit, les éléments sont échangés et les pointeurs se déplacent l'un vers l'autre.

Exemple de code en 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) // Résultat : [5 4 3 2 1]
}

Étant donné que les slices en Go sont passés par référence, les modifications à l'intérieur de la fonction se reflètent sur le slice d'origine, comme le montre la sortie.