0Pricing
Go Academy · Lezione

Ordinare gli slice

sort.Slice e funzioni ausiliarie

Ordinare gli slice è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.

Perché l'ordinamento è importante

L'ordinamento dispone gli elementi in un ordine definito. Il package sort della libreria standard di Go gestisce questa operazione in modo efficiente.

In Go raramente si scrive un proprio algoritmo di ordinamento. Si chiamano invece helper che operano sulle slice.

Importare sort

Per utilizzare il package, lo importi con import "sort". Fa parte della libreria standard, quindi non è necessario scaricare nulla dall'esterno.

package main

import (
	"fmt"
	"sort"
)

func main() {
	fmt.Println("sort imported")
	_ = sort.IntsAreSorted([]int{1, 2, 3})
}

Ordinare gli interi

sort.Ints ordina in ordine crescente, direttamente, una slice di int. La slice originale viene modificata.

package main

import (
	"fmt"
	"sort"
)

func main() {
	nums := []int{5, 2, 8, 1, 9}
	sort.Ints(nums)
	fmt.Println(nums)
}

Ordinare le stringhe

sort.Strings ordina una slice di stringhe in ordine lessicografico, cioè alfabetico secondo l'ordine dei byte.

package main

import (
	"fmt"
	"sort"
)

func main() {
	words := []string{"banana", "apple", "cherry"}
	sort.Strings(words)
	fmt.Println(words)
}

Ordinare i numeri in virgola mobile

sort.Float64s ordina in ordine crescente una slice di valori float64.

package main

import (
	"fmt"
	"sort"
)

func main() {
	values := []float64{3.2, 1.5, 2.8}
	sort.Float64s(values)
	fmt.Println(values)
}

sort.Slice

sort.Slice ordina qualsiasi slice utilizzando una funzione less fornita da Lei. La funzione riceve due indici, i e j, e restituisce true se l'elemento i deve precedere l'elemento j.

package main

import (
	"fmt"
	"sort"
)

func main() {
	nums := []int{5, 2, 8, 1}
	sort.Slice(nums, func(i, j int) bool {
		return nums[i] < nums[j]
	})
	fmt.Println(nums)
}

Ordine decrescente

Per ordinare in modo decrescente, inverta il confronto nella funzione less: restituisca nums[i] > nums[j].

package main

import (
	"fmt"
	"sort"
)

func main() {
	nums := []int{5, 2, 8, 1}
	sort.Slice(nums, func(i, j int) bool {
		return nums[i] > nums[j]
	})
	fmt.Println(nums)
}

Ordinare le struct

sort.Slice è particolarmente utile con le struct. Può decidere quale campo determina l'ordine.

package main

import (
	"fmt"
	"sort"
)

type Person struct {
	Name string
	Age  int
}

func main() {
	people := []Person{{"Bob", 30}, {"Alice", 25}}
	sort.Slice(people, func(i, j int) bool {
		return people[i].Age < people[j].Age
	})
	fmt.Println(people)
}

Verificare se una slice è ordinata

Helper come sort.IntsAreSorted e sort.SliceIsSorted restituiscono true se una slice è già ordinata, senza modificarla.

package main

import (
	"fmt"
	"sort"
)

func main() {
	nums := []int{1, 2, 3}
	fmt.Println(sort.IntsAreSorted(nums))
}

Modifica direttamente

Tutte queste funzioni ordinano direttamente. Non restituiscono una nuova slice. Dopo aver chiamato sort.Ints(s), è la variabile s stessa a essere riordinata.

package main

import (
	"fmt"
	"sort"
)

func main() {
	s := []int{3, 1, 2}
	sort.Ints(s)
	fmt.Println("s is now:", s)
}

Scegliere l'helper giusto

Utilizzi gli helper tipizzati (sort.Ints, sort.Strings, sort.Float64s) per le slice semplici. Scelga sort.Slice quando ha bisogno di una regola personalizzata o deve ordinare struct.

  • sort.Ints - interi in ordine crescente
  • sort.Slice - qualsiasi tipo, con una regola definita da Lei

Verifica rapida

Che cosa restituisce la funzione less in sort.Slice?

Riepilogo

Ha imparato a ordinare con il package sort:

  • sort.Ints, sort.Strings, sort.Float64s per le slice tipizzate
  • sort.Slice con una funzione less per regole personalizzate e struct
  • Tutti gli ordinamenti avvengono direttamente

Domande Frequenti

La lezione «Ordinare gli slice» è gratuita?

Sì — il testo completo di «Ordinare gli slice» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.

Cosa imparerò in «Ordinare gli slice»?

sort.Slice e funzioni ausiliarie Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Go Academy?

Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Ordinare gli slice»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Go Academy?

Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Ordinare gli slice
  2. Ordini di ordinamento personalizzati
  3. Cercare dati ordinati
  4. Ordinamento stabile
← Torna a Go Academy