Bir fonksiyon var `unpredictableFunc()`, onu zaman aşımına uğrayacak şekilde (örneğin 1 saniye) sarmak ve çalışma süresini kaydetmek gerekiyor.
// Sonsuz süre çalışan ve sayı döndüren bir fonksiyon var.
// Gövdesini değiştirmemize izin yok (içinde bir ağ isteği olduğunu varsayalım).
func unpredictableFunc() int64 {
rnd := rand.Int63n(5000)
time.Sleep(time.Duration(rnd) * time.Millisecond)
return rnd
}
// Sarma fonksiyonunu değiştirmemiz gerekiyor, bu fonksiyon belirli bir zaman aşımıyla çalışacak (örneğin 1 saniye).
// Eğer "uzun" fonksiyon bu süre içinde tamamlandıysa, mükemmel, sonucu döndürürüz.
// Aksi takdirde, hata döndürürüz. Bu durumda çalışma sonucunun önemi yok.
//
// Ayrıca, bu fonksiyonun ne kadar süre çalıştığını ölçmemiz gerekiyor (sadece log'a yazdırmak yeterli).
// Sarma fonksiyonunun imzasını değiştirebiliriz.
func predictableFunc() int64 {
return unpredictableFunc()
}