Junior — Middle
¿Puedes explicar el concepto de 'Once' en el lenguaje Go y en qué casos se aplica?
sobes.tech AI
Respuesta de la IA
En el lenguaje Go, sync.Once es una estructura que garantiza que una función determinada se ejecute solo una vez, incluso si la llamada proviene de varias goroutines al mismo tiempo. Esto es útil para inicializar recursos que deben crearse una sola vez, como establecer una conexión con una base de datos o cargar una configuración.
Ejemplo de uso:
var once sync.Once
func initialize() {
fmt.Println("Inicialización completada")
}
func main() {
for i := 0; i < 5; i++ {
go func() {
once.Do(initialize)
}()
}
time.Sleep(time.Second) // Esperar a que terminen las goroutines
}
En este ejemplo, la función initialize será llamada exactamente una vez, independientemente de la cantidad de goroutines.