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) // το initialize θα καλεστεί μόνο μία φορά
}()
}
time.Sleep(time.Second) // Περιμένουμε να ολοκληρωθούν οι goroutines
}
Στα έργα μου, έχω χρησιμοποιήσει το sync.Once για την τεμπέλικη αρχικοποίηση της διαμόρφωσης ή της σύνδεσης με τη βάση δεδομένων, για να αποφύγω επαναλαμβανόμενες αρχικοποιήσεις και συνθήκες αγώνα.