Sobes.tech
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 για την τεμπέλικη αρχικοποίηση της διαμόρφωσης ή της σύνδεσης με τη βάση δεδομένων, για να αποφύγω επαναλαμβανόμενες αρχικοποιήσεις και συνθήκες αγώνα.