Una array es una estructura de datos. De manera similar, en Golang tenemos slice, que es más flexible, potente, liviano y conveniente que array. Dado que slice es más flexible que array, su flexibilidad se determina en términos de su tamaño. Al igual que una array, tiene un valor de indexación y una longitud, pero su tamaño no es fijo. Cuando declaramos un segmento, no especificamos el tamaño del mismo.
Sintaxis:
[]mySlice; OR []mySlice{}; OR []mySlice{input1, input2, .........input n}
Además, un segmento y una array están conectados entre sí, en un segmento, hay una referencia a una array subyacente. Y en un segmento, podemos almacenar elementos duplicados.
Ejemplo: aquí, veremos cómo eliminar los elementos duplicados del segmento. Hemos definido una función en la que estamos pasando los valores de corte y usando la función de mapa estamos comprobando los duplicados y eliminándolos.
C
// Golang program to remove duplicate // values from Slice package main import ( "fmt" ) func removeDuplicateValues(intSlice []int) []int { keys := make(map[int]bool) list := []int{} // If the key(values of the slice) is not equal // to the already present value in new slice (list) // then we append it. else we jump on another element. for _, entry := range intSlice { if _, value := keys[entry]; !value { keys[entry] = true list = append(list, entry) } } return list } func main() { // Assigning values to the slice intSliceValues := []int{1,2,3,4,5,2,3,5,7,9,6,7} // Printing original value of slice fmt.Println(intSliceValues) // Calling function where we // are removing the duplicates removeDuplicateValuesSlice := removeDuplicateValues(intSliceValues) // Printing the filtered slice // without duplicates fmt.Println(removeDuplicateValuesSlice) }
Producción:
[1 2 3 4 5 2 3 5 7 9 6 7] [1 2 3 4 5 7 9 6]
Explicación:
- Desde la función main, hemos declarado un slice. También hemos impreso el valor original de la rebanada.
- Hemos definido una función en la que estamos pasando los valores originales del segmento y verificando los duplicados.
- Lógica para comprobación de duplicados: Para ello hemos definido otro sector y asignando los primeros valores comprobando si el valor ya existe en el nuevo sector o no. Devuelve el corte sin duplicados.
- Estamos llamando a la función removeDuplicateValues de la función principal donde se imprime el segmento de retorno de la función.