Junior — Middle
Kun je het concept 'Once' in de programmeertaal Go uitleggen en in welke gevallen het wordt toegepast?
sobes.tech AI
Antwoord van AI
In de programmeertaal Go is sync.Once een structuur die garandeert dat een bepaalde functie slechts één keer wordt uitgevoerd, zelfs als de oproep gelijktijdig uit meerdere goroutines komt. Dit is handig voor het initialiseren van bronnen die maar één keer mogen worden gemaakt, zoals het opzetten van een verbinding met een database of het laden van een configuratie.
Voorbeeld van gebruik:
var once sync.Once
func initialize() {
fmt.Println("Initialisatie voltooid")
}
func main() {
for i := 0; i < 5; i++ {
go func() {
once.Do(initialize)
}()
}
time.Sleep(time.Second) // Wacht tot alle goroutines klaar zijn
}
In dit voorbeeld wordt de functie initialize precies één keer aangeroepen, ongeacht het aantal goroutines.