Функция maps.EqualFunc
Функция maps.EqualFunc из пакета maps проверяет,
имеют ли две карты одинаковый набор ключей и равные значения
согласно предоставленной функции сравнения. Первым параметром
она принимает первую карту для сравнения, вторым - вторую карту,
а третьим - функцию, которая определяет, равны ли значения
для заданного ключа.
Синтаксис
maps.EqualFunc(m1, m2, eq func(V, V) bool) bool
Пример
Давайте сравним две карты с целочисленными значениями, используя функцию, которая считает значения равными, если они отличаются не более чем на 1:
package main
import (
"fmt"
"maps"
)
func main() {
m1 := map[string]int{"a": 10, "b": 20}
m2 := map[string]int{"a": 11, "b": 19}
res := maps.EqualFunc(m1, m2, func(v1, v2 int) bool {
return v1 == v2 || v1 == v2+1 || v1 == v2-1
})
fmt.Println(res)
}
Результат выполнения кода:
true
Пример
Рассмотрим случай, когда ключи совпадают, но значения не проходят проверку на равенство:
package main
import (
"fmt"
"maps"
)
func main() {
m1 := map[string]int{"x": 5, "y": 15}
m2 := map[string]int{"x": 10, "y": 20}
res := maps.EqualFunc(m1, m2, func(v1, v2 int) bool {
return v1 == v2
})
fmt.Println(res)
}
Результат выполнения кода:
false
Пример
Если наборы ключей различаются, функция всегда возвращает false,
даже если значения совпадают:
package main
import (
"fmt"
"maps"
)
func main() {
m1 := map[string]int{"a": 1, "b": 2}
m2 := map[string]int{"a": 1, "c": 2}
res := maps.EqualFunc(m1, m2, func(v1, v2 int) bool {
return v1 == v2
})
fmt.Println(res)
}
Результат выполнения кода:
false
Смотрите также
-
функцию
maps.Equal,
которая сравнивает карты на строгое равенство значений -
функцию
maps.Keys,
которая возвращает слайс ключей карты -
функцию
maps.Values,
которая возвращает слайс значений карты -
функцию
maps.DeleteFunc,
которая удаляет элементы карты по условию