Existuje funkce `unpredictableFunc()`, kterou je třeba obalit tak, aby běžela s časovým limitem (například 1 sekunda) a zaznamenávala dobu běhu.
// Existuje funkce, která běží nekonečně dlouho a vrací číslo.
// Tělo této funkce nelze měnit (představme si, že uvnitř je síťový požadavek).
func unpredictableFunc() int64 {
rnd := rand.Int63n(5000)
time.Sleep(time.Duration(rnd) * time.Millisecond)
return rnd
}
// Je třeba upravit obalovací funkci, která bude pracovat s daným časovým limitem (například 1 sekunda).
// Pokud "dlouhá" funkce doběhne v tomto čase, je to skvělé, vracíme výsledek.
// Pokud ne, vracíme chybu. Výsledek této funkce nás v tomto případě nezajímá.
//
// Navíc je třeba změřit, jak dlouho tato funkce běžela (stačí vypisovat do logu).
// Signatura obalovací funkce může být změněna.
func predictableFunc() int64 {
return unpredictableFunc()
}