hkucuk

Найти разницу между двумя сериями в GoLang

January 29, 2019 • ☕️ 1 мин чтение • 🏷 компьютер, программное

Переведено автором: DeutschEnglishItalianoРусский


Предположим, у нас есть два набора рук. Когда мы хотим определить элементы одного из этих двух массивов, которых нет в другом массиве, нам нужно поместить эти два массива в процесс сравнения. Ниже приведен пример функции, которая выполняет эту операцию на языке программирования GoLang.

Примеры последовательностей и ожидаемый результат от этих последовательностей следующие:

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

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

Функция, которая сравнивает два массива в 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
}

Нахождение разности двух массивов:

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 =>  []
}

Чтобы проверить код => RUN