Explorando el Poder de Go 1.21: Slices Package
¿Ya conoces el poder de Go 1.21? En esta nota exploraremos las mejoras que este nuevo paquete ofrece, asegurando un mejor rendimiento para tus aplicaciones en Go. Te contaremos sobre package slices, con el cual podemos realizar diversas operaciones en los slice en Go.
El primer paso es importar el package slices. (Importaremos el package fmt para mostrar los ejemplos).
Vamos a ver estos métodos a continuación:
- Binary Search
- Compact
- Compare
- Contains
- Clone
- Equals
- Index
- Insert
- IsSorted
- Max & Min
- Remove
- Reverse
- Replace
- Sort
Algunos métodos tienen funcionalidad de Function, con esto podemos usar comparaciones personalizadas.
Binary Search
Podemos realizar una búsqueda binaria con este método para encontrar algún valor en nuestro slice.
Nuestros slices deben estar ordenados para realizar esta operación.
Por ejemplo:
Output:
Compact
Este método reemplaza ejecuciones consecutivas de elementos iguales con una sola copia.
Nuestros slices deben estar ordenados para realizar esta operación.
Por ejemplo:
Output:
Compare
Podemos comparar 2 slices. El resultado es:
- 0 si s1 == s2
- -1 si s1 < s2
- +1 si s1 > s2
Por ejemplo:
Output:
Contains
Podemos usar este método para verificar si algún valor existe en el slice.
Por ejemplo:
Output:
Clone
Podemos usar este método para clonar un slice.
Por ejemplo:
Output:
Equals
Podemos usar este método para determinar si dos slices son iguales: deben tener la misma longitud, y todos los elementos deben ser iguales.
Si las longitudes son diferentes, el método devolverá false.
De lo contrario, los elementos se comparan en orden de índice creciente, y la comparación se detiene en el primer par desigual.
Por ejemplo:
Output:
Index
Este método devuelve el índice de la primera ocurrencia del valor en nuestro slice, o -1 si no está presente.
Por ejemplo:
Output:
Insert
Podemos usar este método para insertar un rango de valores en un índice específico y devolver el slice modificado.
Por ejemplo:
Output:
IsSorted
Podemos usar este método para verificar si nuestro slice está ordenado en orden ascendente.
Por ejemplo:
Output:
Max & Min
Podemos usar los métodos Max y Min para obtener los valores máximo y mínimo del slice.
Por ejemplo:
Output:
Remove
Podemos usar este método para eliminar un rango de nuestro slice, y el método devolverá el nuevo slice.
Por ejemplo:
Output:
Reverse
Podemos usar este método para invertir los elementos de nuestro slice.
Por ejemplo:
Output:
Replace
Podemos usar este método para reemplazar un rango de elementos. Para realizar esta operación, necesitamos definir el valor de 'i' (inicio), el valor de 'j' (fin) y los valores que se agregarán.
Genera un error si mySlice[from:to]
no es un slice válido.
Por ejemplo, vamos a usar el slice:
Vamos a reemplazar los valores desde el índice 3 hasta el índice 6 con otros valores. No es necesario que estos otros valores tengan la misma longitud que el rango (índice 3 hasta el índice 6).
Output:
Podemos agregar los mismos 3 valores solo reemplazando 1 valor.
Output:
O ningún valor
Output:
Sort
Podemos usar este método para ordenar los elementos de nuestro slice.
Por ejemplo:
Output:
Function
Algunos métodos tienen una funcionalidad de 'Función' con la que podemos usar una comparación personalizada. Estos métodos son:
Method | Function Method |
---|---|
BinarySearch | BinarySearchFunc |
Compact | CompactFunc |
Compare | CompareFunc |
Contains | ContainsFunc |
Delete | DeleteFunc |
Equal | EqualFunc |
Index | IndexFunc |
IsSorted | IsSortedFunc |
Max | MaxFunc |
Min | MinFunc |
Sort | SortFunc |
Vamos a realizar el siguiente ejemplo con el método Equal (método Function), comparando un slice de enteros con un slice de cadenas.
Hemos definido los valores para la comparación y la función.
Output:
De todas estas formas puedes manipular eficientemente tus slices. Recuerda que para obtener más información, puedes visitar el sitio oficial de Go: https://pkg.go.dev/slices@master
Recurso: https://github.com/digitalhouse-tech/blog-go-v21-slices