hkucuk

Trovare la differenza tra due serie in GoLang

January 29, 2019 • ☕️ 1 min leggi • 🏷 computer, software

Tradotto dall'autore in: DeutschEnglishItalianoРусский


Supponiamo di avere due serie di mani. Quando vogliamo determinare gli elementi di uno di questi due array che non si trovano nell’altro array, dobbiamo mettere questi due array in un processo di confronto. Di seguito è riportata una funzione di esempio che esegue questa operazione nel linguaggio di programmazione GoLang.

Sequenze di esempio e l’output atteso da queste sequenze sono i seguenti:

array1 := []int8{1, 2, 3, 4, 5}
array2 := []int8{3, 4, 5}

// result
array1 / array2 => {1, 2}

La funzione che confronta i due array in GoLang:

func difference(a, b []int8) []int8 {

    target := map[int8]bool{}
    for _, x := range b {
        target[x] = true
    }

    result := []int8{}
    for _, x := range a {
        if _, ok := target[x]; !ok {
            result = append(result, x)
        }
    }

    return result
}

Trovare la differenza tra due array:

func main() {
	
    array1 := []int8{1, 2, 3, 4, 5}
    array2 := []int8{3, 4, 5}

    result := difference(array1, array2)
    fmt.Println("array1 / array2 => ", result)
    // output: array1 / array2 =>  [1 2]

    result2 := difference(array2, array1)
    fmt.Println("array2 / array1 => ", result2)
    // output: array2 / array1 =>  []
}

Per testare il codice => RUN