Կա `unpredictableFunc()` ֆունկցիա, որը պետք է պատված լինի այնպես, որ այն աշխատի ժամանակային սահմանափակմամբ (օրինակ՝ 1 վայրկյան) և գրանցի գործարկման ժամանակը:
// Կա ֆունկցիա, որը անընդհատ աշխատում է և վերադարձնում թիվ:
// Նրա մարմինը փոխել չի կարելի (պատկերացրեք, որ ներսում ցանցային հարցում կա):
func unpredictableFunc() int64 {
rnd := rand.Int63n(5000)
time.Sleep(time.Duration(rnd) * time.Millisecond)
return rnd
}
// Պետք է փոխել պատված ֆունկցիան, որը կաշխատի սահմանված ժամանակային սահմանափակմամբ (օրինակ՝ 1 վայրկյան):
// Եթե "երկար" ֆունկցիան ավարտվի այդ ժամանակում, դա լավ է, վերադարձնում ենք արդյունքը:
// Եթե ոչ, վերադարձնում ենք սխալ: Այս դեպքում աշխատանքի արդյունքը մեզ չի հետաքրքրում:
//
// Ավելին, պետք է չափել, թե որքան ժամանակ է աշխատել այս ֆունկցիան (պարզապես գրեք լոգում):
// Պատված ֆունկցիայի սիգնատուրան կարող է փոխվել:
func predictableFunc() int64 {
return unpredictableFunc()
}