Sobes.tech
Junior — Middle

Você já utilizou a função Once na linguagem Go e como ela foi usada nos seus projetos?

sobes.tech IA

Resposta da IA

Na linguagem Go, a função sync.Once é usada para garantir que um determinado trecho de código seja executado exatamente uma vez, mesmo que a chamada venha de várias goroutines ao mesmo tempo. Isso é útil, por exemplo, para a inicialização de recursos que devem ser criados apenas uma vez.

Exemplo de uso:

var once sync.Once

func initialize() {
    fmt.Println("Inicialização concluída")
}

func main() {
    for i := 0; i < 5; i++ {
        go func() {
            once.Do(initialize) // initialize será chamado apenas uma vez
        }()
    }
    time.Sleep(time.Second) // Esperamos pelas goroutines terminarem
}

Nos meus projetos, usei sync.Once para inicialização preguiçosa de configurações ou conexão ao banco de dados, para evitar inicializações repetidas e condições de corrida.