Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: sync.Map, Range, Go, concurrency, iteration

Есть ли у sync.Map метод для перебора всех элементов? Как он называется?

Проверяет знание метода Range для перебора элементов sync.Map в Go.

Короткий ответ

Да, у sync.Map есть метод Range(func(key, value interface{}) bool). Он позволяет перебрать все элементы карты, вызывая переданную функцию для каждой пары ключ-значение. Если функция возвращает false, итерация прекращается. Это единственный способ безопасно перебрать sync.Map из-за конкурентного доступа.

Длинный ответ

Метод Range в sync.Map

В Go структура sync.Map предоставляет метод Range для перебора всех хранящихся элементов. Этот метод принимает функцию обратного вызова, которая вызывается для каждой пары ключ-значение. Если функция возвращает false, перебор досрочно завершается.

Пример использования

package main

import (
	"fmt"
	"sync"
)

func main() {
	var m sync.Map
	m.Store("key1", "value1")
	m.Store("key2", "value2")

	m.Range(func(key, value interface{}) bool {
		fmt.Printf("%v: %v\n", key, value)
		return true // продолжаем перебор
	})
}

Особенности

  • Range гарантирует безопасный доступ к карте при конкурентных операциях.
  • Порядок перебора не определён и может меняться между вызовами.
  • Метод не блокирует карту на всё время перебора, поэтому другие горутины могут изменять её.

Вывод

Range — единственный способ итерации по sync.Map, обеспечивающий потокобезопасность. Его следует использовать вместо прямого перебора, когда карта может изменяться конкурентно.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • Golang

    Golang

Ключевые слова

#sync.Map

#Range

#Go

#concurrency

#iteration

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.