slices.Reverse în Go

Inversează ordinea elementelor unui slice, pe loc.

Sintaxă
import "slices"

func Reverse[S ~[]E, E any](s S)

Ce face slices.Reverse

slices.Reverse(s) pune elementele în ordine inversă: primul devine ultimul. Modifică slice-ul primit și nu returnează nimic.

Combinată cu slices.Sort dă ordinea descrescătoare. Dacă vrei să parcurgi un slice de la coadă fără să-l modifici, folosește slices.Backward.

Parametri

Parametru Descriere
s Slice-ul inversat.

Ce returnează

Nimic; slice-ul este modificat pe loc.

Exemple

Exemplul 1: Inversare și ordine descrescătoare

package main

import (
    "fmt"
    "slices"
)

func main() {
    numaratoare := []int{1, 2, 3, 4, 5}
    slices.Reverse(numaratoare)
    fmt.Println(numaratoare)

    nume := []string{"Mihai", "Ana", "Radu"}
    slices.Sort(nume)
    slices.Reverse(nume)
    fmt.Println(nume)
}

Rezultat

[5 4 3 2 1]
[Radu Mihai Ana]

Exemplul 2: Inversarea literelor unui cuvânt

Un string nu poate fi modificat. Îl transformi în []rune (ca diacriticele să rămână întregi), îl inversezi și îl transformi înapoi.

package main

import (
    "fmt"
    "slices"
)

func main() {
    litere := []rune("țară")
    slices.Reverse(litere)
    fmt.Println(string(litere))
}

Rezultat

ăraț

Greșeli frecvente

  • Scrii s = slices.Reverse(s): funcția nu returnează nimic, deci nu compilează.
  • Inversezi un text ca []byte: literele cu diacritice au mai mulți octeți și se strică. Folosește []rune.

Comenzi înrudite

  • slices.Sort: Sortează crescător, pe loc, un slice de orice tip ordonat (numere, texte).
  • slices.All: Transformă un slice în iterator: All dă perechi (indice, valoare), Values doar valorile, Backward perechile de la coadă la cap.