Очистка карты в Go
Очистка убирает все пары и оставляет карту пустой.
Переменная по-прежнему указывает на ту же созданную
карту: после очистки в нее снова можно писать.
Длина становится 0.
Заполним карту, очистим и проверим длину:
ages := map[string]int{"ann": 20, "bob": 30}
fmt.Println(len(ages))
clear(ages)
fmt.Println(len(ages))
ages["cy"] = 25
fmt.Println(ages["cy"])
Сначала длина 2, после очистки 0.
Новая запись по ключу "cy" работает:
карта не стала «нулевой», только опустела.
Очистку можно сравнить с удалением каждого ключа в цикле, но одной командой короче. Удалять ключи по одному тоже допустимо, если нужна выборочность.
room := make(map[string]int)
room["a"] = 1
clear(room)
fmt.Println(len(room) == 0)
Дана следующая карта:
desk := map[string]int{"a": 1, "b": 2}
Очистите desk и выведите длину и
результат сравнения длины с 0.
Дана следующая карта:
box := map[string]int{"x": 10, "y": 20}
Очистите box, добавьте одну пару
по новому ключу и выведите значение.
Чем очистка отличается от присваивания новой пустой карты в ту же переменную? Подсказка: старые ссылки на карту из других переменных.