Наличие значения в Go
Наличие значения проверяют обходом всех пар, потому что ищут не ключ. Отдельной команды «есть ли такое значение» нет. Заводят логическую переменную, идут циклом по карте и сравнивают каждое значение с искомым.
Проверим, есть ли среди возрастов число 30:
ages := map[string]int{"ann": 20, "bob": 30}
target := 30
found := false
for _, v := range ages {
if v == target {
found = true
}
}
fmt.Println(found)
На экране true. Ключи не нужны: в цикле
вторую переменную можно не использовать, если
важны только значения.
Если числа нет, флаг останется false:
ages := map[string]int{"ann": 20}
target := 30
found := false
for _, v := range ages {
if v == target {
found = true
}
}
fmt.Println(found)
Дана следующая карта:
data := map[string]int{"a": 5, "b": 7}
Узнайте, есть ли значение 7, и выведите
флаг.
Дана следующая карта:
scores := map[string]int{"zero": 0}
Проверьте, встречается ли 0 среди значений.
Чем это отличается от проверки ключа?
Дана следующая карта:
room := map[string]int{"a": 3, "b": 11, "c": 8}
Обойдите room и выведите true,
если есть значение больше 10.