Sobes.tech
Junior — Middle

Pode explicar o conceito de 'Once' na linguagem Go e em que casos ele é aplicado?

sobes.tech IA

Resposta da IA

Na linguagem Go, sync.Once é uma estrutura que garante que uma determinada função seja executada apenas uma vez, mesmo que a chamada venha de várias goroutines ao mesmo tempo. Isso é útil para inicializar recursos que devem ser criados uma única vez, como estabelecer uma conexão com um banco de dados ou carregar uma configuração.

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)
        }()
    }
    time.Sleep(time.Second) // Esperar que as goroutines terminem
}

Neste exemplo, a função initialize será chamada exatamente uma vez, independentemente do número de goroutines.