Найти разницу между двумя сериями в GoLang
29 января 2020 г. • ☕️ 1 мин чтение • 🏷 компьютер, программное, алгоритм
Предположим, у нас есть два набора рук. Когда мы хотим определить элементы одного из этих двух массивов, которых нет в другом массиве, нам нужно поместить эти два массива в процесс сравнения. Ниже приведен пример функции, которая выполняет эту операцию на языке программирования 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