Метод sync.Map.Store
Метод sync.Map.Store сохраняет значение по ключу в конкурентно-безопасной карте. В первый параметр мы передаем ключ, во второй параметр мы передаем значение, которое нужно сохранить. Если ключ уже существует в карте, метод перезаписывает соответствующее ему значение.
Синтаксис
m.Store(key, value)
Пример
Давайте создадим sync.Map и сохраним в ней несколько пар ключ-значение:
package main
import (
"fmt"
"sync"
)
func main() {
var m sync.Map
m.Store("name", "John")
m.Store("age", 30)
name, _ := m.Load("name")
age, _ := m.Load("age")
fmt.Println(name, age)
}
Результат выполнения кода:
"John" 30
Пример
Давайте сохраним значение по ключу, который уже существует в карте. Метод перезапишет старое значение:
package main
import (
"fmt"
"sync"
)
func main() {
var m sync.Map
m.Store("city", "Moscow")
m.Store("city", "Saint Petersburg")
value, _ := m.Load("city")
fmt.Println(value)
}
Результат выполнения кода:
"Saint Petersburg"
Пример
Метод sync.Map.Store безопасен для использования из нескольких горутин. Давайте сохраним значения в конкурентной среде:
package main
import (
"fmt"
"sync"
)
func main() {
var m sync.Map
var wg sync.WaitGroup
for i := 0; i < 100; i++ {
wg.Add(1)
go func(index int) {
defer wg.Done()
m.Store(index, fmt.Sprintf("value-%d", index))
}(i)
}
wg.Wait()
value, _ := m.Load(50)
fmt.Println(value)
}
Результат выполнения кода:
"value-50"
Смотрите также
-
метод
sync.Map.Load,
который загружает значение по ключу -
метод
sync.Map.LoadOrStore,
который загружает значение или сохраняет новое -
метод
sync.Map.Delete,
который удаляет значение по ключу -
тип
sync.Map,
который представляет конкурентно-безопасную карту