Există o funcție `unpredictableFunc()`, pe care trebuie să o înveliți astfel încât să se execute cu un timeout (de exemplu, 1 secundă) și să se înregistreze timpul de execuție.
// Există o funcție care funcționează indefinit și returnează un număr.
// Corpul său nu poate fi modificat (să presupunem că în interior există o solicitare de rețea).
func unpredictableFunc() int64 {
rnd := rand.Int63n(5000)
time.Sleep(time.Duration(rnd) * time.Millisecond)
return rnd
}
// Trebuie modificată funcția de înveliș, care va funcționa cu un timeout stabilit (de exemplu, 1 secundă).
// Dacă "funcția lungă" s-a terminat în acest timp, excelent, returnăm rezultatul.
// Dacă nu, returnăm o eroare. Rezultatul funcției în acest caz nu este important.
//
// În plus, trebuie măsurat cât timp a durat această funcție (pur și simplu afișând în log).
// Semnătura funcției de înveliș poate fi modificată.
func predictableFunc() int64 {
return unpredictableFunc()
}