0Pricing
Go Academy · Lección

Ordenación de slices

Use sort.Slice y sus auxiliares

Ordenación de slices es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.

Por qué es importante ordenar

Ordenar coloca los elementos en un orden definido. El paquete sort de la biblioteca estándar de Go lo hace de forma eficiente.

Rara vez tendrá que escribir su propio algoritmo de ordenación en Go. En su lugar, puede llamar a funciones auxiliares que trabajan con slices.

Importar sort

Para usar el paquete, impórtelo con import "sort". Forma parte de la biblioteca estándar, por lo que no necesita descargar nada externo.

package main

import (
	"fmt"
	"sort"
)

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

Ordenar enteros

sort.Ints ordena un slice de int en orden ascendente y en el mismo slice. El slice original se modifica.

package main

import (
	"fmt"
	"sort"
)

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

Ordenar strings

sort.Strings ordena un slice de strings lexicográficamente, es decir, en orden alfabético según el orden de los bytes.

package main

import (
	"fmt"
	"sort"
)

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

Ordenar números de coma flotante

sort.Float64s ordena un slice de valores float64 en orden ascendente.

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 ordena cualquier slice mediante una función less que usted proporciona. La función recibe dos índices, i y j, y devuelve true si el elemento i debe ir antes que el 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)
}

Orden descendente

Para ordenar de forma descendente, invierta la comparación en la función less: devuelva 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)
}

Ordenar structs

sort.Slice resulta especialmente útil con structs. Usted decide qué campo determina el orden.

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)
}

Comprobar si está ordenado

Funciones auxiliares como sort.IntsAreSorted y sort.SliceIsSorted devuelven true si un slice ya está ordenado, sin modificarlo.

package main

import (
	"fmt"
	"sort"
)

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

Modificación en el mismo slice

Todas estas funciones ordenan el mismo slice. No devuelven un slice nuevo. Después de llamar a sort.Ints(s), la propia variable s queda reordenada.

package main

import (
	"fmt"
	"sort"
)

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

Elegir la función auxiliar adecuada

Use las funciones auxiliares con tipos (sort.Ints, sort.Strings, sort.Float64s) para slices sencillos. Use sort.Slice cuando necesite una regla personalizada o quiera ordenar structs.

  • sort.Ints - enteros en orden ascendente
  • sort.Slice - cualquier tipo, con su propia regla

Comprobación rápida

¿Qué devuelve la función less de sort.Slice?

Repaso

Ha aprendido a ordenar con el paquete sort:

  • sort.Ints, sort.Strings y sort.Float64s para slices con tipos específicos
  • sort.Slice con una función less para reglas personalizadas y structs
  • Toda la ordenación se realiza en el mismo slice

Preguntas frecuentes

¿La lección «Ordenación de slices» es gratis?

Sí — el texto completo de «Ordenación de slices» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Ordenación de slices»?

Use sort.Slice y sus auxiliares Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Go Academy?

No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Ordenación de slices»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Go Academy?

Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Ordenación de slices
  2. Órdenes de ordenación personalizados
  3. Búsqueda en datos ordenados
  4. Ordenación estable
← Volver a Go Academy