Existuje funkcia `unpredictableFunc()`, ktorú je potrebné obaliť tak, aby sa vykonávala s časovým limitom (napríklad 1 sekunda) a zaznamenávala čas vykonávania.
// Existuje funkcia, ktorá beží neobmedzene dlho a vracia číslo.
// Telo tejto funkcie nemožno meniť (predstavme si, že vo vnútri je sieťová požiadavka).
func unpredictableFunc() int64 {
rnd := rand.Int63n(5000)
time.Sleep(time.Duration(rnd) * time.Millisecond)
return rnd
}
// Je potrebné upraviť obalovaciu funkciu, ktorá bude pracovať s daným časovým limitom (napríklad 1 sekunda).
// Ak "dlhá" funkcia skončí v tomto čase, je to skvelé, vrátime výsledok.
// Ak nie, vrátime chybu. Výsledok tejto funkcie nás v tomto prípade nezaujíma.
//
// Navyše je potrebné zmerať, ako dlho táto funkcia bežala (stačí vypísať do logu).
// Signatúra obalovacej funkcie môže byť zmenená.
func predictableFunc() int64 {
return unpredictableFunc()
}