Junior — Middle
Μπορείτε να εξηγήσετε την έννοια του 'Once' στη γλώσσα Go και σε ποιες περιπτώσεις εφαρμόζεται;
sobes.tech AI
Απάντηση από AI
Στη γλώσσα Go, το sync.Once είναι μια δομή που διασφαλίζει ότι μια συγκεκριμένη λειτουργία θα εκτελεστεί μόνο μία φορά, ακόμη και αν η κλήση προέρχεται ταυτόχρονα από πολλές goroutines. Αυτό είναι χρήσιμο για την αρχικοποίηση πόρων που πρέπει να δημιουργηθούν μόνο μία φορά, όπως η εγκατάσταση μιας σύνδεσης με μια βάση δεδομένων ή η φόρτωση μιας διαμόρφωσης.
Παράδειγμα χρήσης:
var once sync.Once
func initialize() {
fmt.Println("Ολοκλήρωση αρχικοποίησης")
}
func main() {
for i := 0; i < 5; i++ {
go func() {
once.Do(initialize)
}()
}
time.Sleep(time.Second) // Περιμένουμε να ολοκληρωθούν οι goroutines
}
Σε αυτό το παράδειγμα, η λειτουργία initialize θα κληθεί ακριβώς μία φορά, ανεξάρτητα από τον αριθμό των goroutines.