РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
866 of 1593 menu

sync.Map.CompareAndDelete

Метод sync.Map.CompareAndDelete выполняет атомарное удаление элемента из конкурентной карты, но только при условии, что текущее значение ключа совпадает с переданным ожидаемым значением. В первый параметр мы передаем ключ, который нужно удалить. Во второй параметр мы передаем ожидаемое значение, которое должно быть у элемента для его удаления. Метод возвращает true, если удаление произошло успешно (значение существовало и совпало с ожидаемым), и false в противном случае.

Синтаксис

m.CompareAndDelete(key, old)

Пример

Давайте создадим конкурентную карту, добавим в нее элемент и попробуем удалить его при совпадении значения:

package main import ( "fmt" "sync" ) func main() { var m sync.Map m.Store("age", 25) deleted := m.CompareAndDelete("age", 25) fmt.Println(deleted) val, ok := m.Load("age") fmt.Println(val, ok) }

Результат выполнения кода:

true <nil> false

Пример

Попробуем удалить элемент с несовпадающим значением:

package main import ( "fmt" "sync" ) func main() { var m sync.Map m.Store("age", 25) deleted := m.CompareAndDelete("age", 30) fmt.Println(deleted) val, ok := m.Load("age") fmt.Println(val, ok) }

Результат выполнения кода:

false 25 true

Пример

Попробуем удалить несуществующий ключ:

package main import ( "fmt" "sync" ) func main() { var m sync.Map m.Store("name", "John") deleted := m.CompareAndDelete("age", 25) fmt.Println(deleted) val, ok := m.Load("name") fmt.Println(val, ok) }

Результат выполнения кода:

false John true

Смотрите также

  • метод sync.Map.CompareAndSwap,
    который атомарно заменяет значение по ключу
  • метод sync.Map.LoadAndDelete,
    который удаляет элемент и возвращает его предыдущее значение
  • метод sync.Map.Delete,
    который удаляет элемент по ключу без проверки значения
  • метод sync.Map.Swap,
    который атомарно обменивает значение по ключу
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить