// package life_time -- глобальный счётчик древности записи в паамяти package life_time import ( "math" "sync" "git.p78su.freemyip.com/svi/gostore/pkg/types" ) // LifeTime -- глобальный счётчик древности записи в паамяти type LifeTime struct { timeLife int // Глобальный счётчик block sync.Mutex } // NewLifeTime -- возвращает новый глобальный счётчик func NewLifeTime() types.ILifeTime { sf := &LifeTime{ timeLife: math.MaxInt, } return sf } // Next -- возвращает следующую метку времени и признак перебора func (sf *LifeTime) Next() int { sf.block.Lock() defer sf.block.Unlock() sf.timeLife-- defer func() { if sf.timeLife <= 0 { sf.timeLife = math.MaxInt } }() return sf.timeLife }