Sobes.tech
Junior — Middle

Explique o que é sync.Map e quais são as suas vantagens em comparação com mapas normais em Go.

sobes.tech IA

Resposta da IA

sync.Map — é uma implementação thread-safe de um dicionário (mapa) em Go, projetada para acesso concorrente sem a necessidade de usar mutexes explicitamente.

Vantagens do sync.Map em comparação com um map comum:

  • Segurança para múltiplas threads: Permite leitura e escrita segura de várias goroutines ao mesmo tempo.
  • Otimização para leituras frequentes: Usa mecanismos internos que tornam as operações de leitura muito rápidas.
  • Sem necessidade de gerenciamento manual de bloqueios: Simplifica o código, eliminando a necessidade de usar sync.Mutex.

No entanto, sync.Map pode ser menos eficiente em operações frequentes de escrita e remoção em comparação com um map comum com mutex.

Exemplo de uso:

type Cache struct {
    data sync.Map
}

func (c *Cache) Get(key string) (interface{}, bool) {
    return c.data.Load(key)
}

func (c *Cache) Set(key string, value interface{}) {
    c.data.Store(key, value)
}