Sobes.tech
Junior — Middle

Qual é o papel principal do tipo sync.Once na sincronização de threads em Go?

sobes.tech IA

Resposta da IA

O tipo sync.Once em Go é usado para garantir que um trecho de código seja executado exatamente uma vez, mesmo que seja chamado por várias goroutines.

O papel principal é a inicialização segura de recursos (por exemplo, criar um singleton), para evitar condições de corrida e execuções repetidas.

Exemplo de uso:

var once sync.Once
var config *Config

func loadConfig() {
    config = &Config{/* inicialização */}
}

func GetConfig() *Config {
    once.Do(loadConfig) // loadConfig será chamado apenas uma vez
    return config
}

Assim, sync.Once garante a execução thread-safe de uma função uma única vez.