Programa Golang que elimina duplicados, ignora el pedido

En Golang , cuando queremos eliminar los duplicados sin tener en cuenta ningún orden en particular como los valores iniciales, hacemos uso de Mapping en Go lang. En primer lugar, iteramos a través del bucle y asignamos todos y cada uno de los elementos de la array al tipo de datos booleano. Go proporciona un tipo de mapa incorporado que implementa una tabla hash.

Ejemplo: en este ejemplo, asignamos el tipo de datos de string al tipo de datos int, es decir, cada valor de string está asociado con un valor entero 

Entendamos el programa línea por línea:

package main
import "fmt"

El paquete fmt implementa E/S formateadas con funciones análogas a printf y scanf de C. 

func unique(arr []int) []int {

La definición de función que definimos para eliminar elementos duplicados con el parámetro como array de entrada ‘arr’ y devolver una array de tipo ‘[ ]int’

result:=[]int{}
encountered := map[int]bool{}

Cree un resultado de array que almacenará todos los elementos únicos. ‘encontrado’ almacena el valor asignado de las variables enteras al tipo de datos booleano.

for v:= range arr {
        encountered[arr[v]] = true
    }

Iterar a través del ciclo y para cada elemento que ocurre en ‘arr’, lo establecemos en True. El elemento que está presente varias veces tiene el mismo valor hash (o mapeado).

 for key, _ := range encountered {
        result = append(result, key)
    }
    return result
}

Luego, iteramos a través de los pares de clave y valor presentes en la array asignada. Luego, agregamos a la array de resultados los elementos clave que almacenan el valor único.

func main() {
    array1 := []int{1, 5, 3, 4, 1, 6, 6, 6, 8, 7, 13, 5}
    fmt.Println(array1) 
    unique_items := unique(array1)
    fmt.Println(unique_items)
}

Aquí, en la función principal, inicializamos una array de enteros con algunos elementos que tienen repetición. Imprimimos la array inicial y la array actualizada después de llamar a la función unique(). Esto nos da los elementos únicos, ignorando cualquier orden en particular.

Go

package main
 
import "fmt"
 
func unique(arr []int) []int {
    result := []int{}
    encountered := map[int]bool{}
 
    // Create a map of all unique elements.
    for v := range arr {
        encountered[arr[v]] = true
    }
 
    // Place all unique keys from
    // the map into the results array.
    for key, _ := range encountered {
        result = append(result, key)
    }
    return result
}
 
func main() {
    array1 := []int{2, 4, 5, 7, 2, 3, 4,
             7, 7, 12, 5, 11, 11, 1, 13}
    fmt.Println(array1)
    unique_items := unique(array1)
    fmt.Println(unique_items)
}

Producción:

[2 4 5 7 2 3 4 7 7 12 5 11 11 1 13]
[11 1 13 2 4 5 7 3 12]

Publicación traducida automáticamente

Artículo escrito por dipesh99kumar 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 *