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.