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

Метод sync.Map.Load

Метод sync.Map.Load позволяет безопасно читать значение из конкурентной карты sync.Map. В первый параметр метод принимает ключ типа any, по которому нужно получить значение. Метод возвращает два значения: само значение типа any и булев флаг, который показывает, существует ли ключ в карте. Если ключа нет, возвращается нулевое значение для типа и false.

Синтаксис

value, ok := m.Load(key)

Пример

Давайте создадим карту sync.Map, сохраним в нее значение и прочитаем его методом Load:

package main import ( "fmt" "sync" ) func main() { var m sync.Map // Сохраняем значение по ключу "name" m.Store("name", "John") // Читаем значение по ключу value, ok := m.Load("name") fmt.Println(value, ok) }

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

"John" true

Пример

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

package main import ( "fmt" "sync" ) func main() { var m sync.Map // Читаем значение по несуществующему ключу value, ok := m.Load("age") fmt.Println(value, ok) }

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

<nil> false

Пример

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

package main import ( "fmt" "sync" ) func main() { var m sync.Map var wg sync.WaitGroup // Сохраняем значение m.Store("counter", 42) // Запускаем 10 горутин для чтения for i := 0; i < 10; i++ { wg.Add(1) go func() { defer wg.Done() value, ok := m.Load("counter") if ok { fmt.Printf("Read: %d\n", value) } }() } wg.Wait() }

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

"Read: 42" "Read: 42" "Read: 42" "Read: 42" "Read: 42" "Read: 42" "Read: 42" "Read: 42" "Read: 42" "Read: 42"

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

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