Υπάρχει μια λειτουργία `unpredictableFunc()`, την οποία πρέπει να τυλίξουμε έτσι ώστε να εκτελείται με χρονικό όριο (π.χ., 1 δευτερόλεπτο) και να καταγράφουμε τον χρόνο εκτέλεσης.
// Υπάρχει μια λειτουργία που λειτουργεί απεριόριστα και επιστρέφει έναν αριθμό.
// Το σώμα της δεν μπορεί να αλλάξει (υποθέτουμε ότι μέσα υπάρχει ένα αίτημα δικτύου).
func unpredictableFunc() int64 {
rnd := rand.Int63n(5000)
time.Sleep(time.Duration(rnd) * time.Millisecond)
return rnd
}
// Πρέπει να τροποποιηθεί η λειτουργία περιτύλιξης, η οποία θα λειτουργεί με ένα καθορισμένο χρονικό όριο (π.χ., 1 δευτερόλεπτο).
// Αν η "μακρά" λειτουργία ολοκληρωθεί σε αυτό το χρόνο, τέλεια, επιστρέφουμε το αποτέλεσμα.
// Αν όχι, επιστρέφουμε σφάλμα. Το αποτέλεσμα της εκτέλεσης σε αυτήν την περίπτωση δεν μας ενδιαφέρει.
//
// Επιπλέον, πρέπει να μετρηθεί πόσο χρόνο διήρκεσε αυτή η λειτουργία (απλώς να το εμφανίσουμε στο λογισμικό).
// Η υπογραφή της λειτουργίας περιτύλιξης μπορεί να αλλάξει.
func predictableFunc() int64 {
return unpredictableFunc()
}