¿Cómo eliminar valores duplicados de Slice en Golang?

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.

Publicación traducida automáticamente

Artículo escrito por pganesh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *