Yra funkcija `unpredictableFunc()`, kuri turi būti apgaubta taip, kad ji veiktų su laiko limitu (pavyzdžiui, 1 sekundė) ir būtų registruojamas jos vykdymo laikas.
// Yra funkcija, kuri veikia neribotą laiką ir grąžina skaičių.
// Jos turinys negali būti keičiamas (įsivaizduokite, kad viduje yra tinklo užklausa).
func unpredictableFunc() int64 {
rnd := rand.Int63n(5000)
time.Sleep(time.Duration(rnd) * time.Millisecond)
return rnd
}
// Reikia pakeisti apgaubiančią funkciją, kuri veiks su nustatytu laiko limitu (pavyzdžiui, 1 sekundė).
// Jei "ilga" funkcija baigiasi per šį laiką, tai puiku, grąžiname rezultatą.
// Jei ne, grąžiname klaidą. Šiuo atveju mūsų nesirūpina darbo rezultatas.
//
// Be to, reikia išmatuoti, kiek laiko ši funkcija veikė (paprastai išveskite į logą).
// Apgaubiančios funkcijos parašas gali būti keičiamas.
func predictableFunc() int64 {
return unpredictableFunc()
}