#165·go-cache

关于过期的问题

作者: xiaoliwang创建于 2023年3月6日更新于 2023年3月6日
go
func (c *cache) Get(k string) (interface{}, bool) {
    c.mu.RLock()
    // "内联" get 和 Expired
    item, found := c.items[k]
    if !found {
        c.mu.RUnlock()
        return nil, false
    }
    if item.Expiration > 0 {
        if time.Now().UnixNano() > item.Expiration {
            c.mu.RUnlock()
            return nil, false
        }
    }
    c.mu.RUnlock()
    return item.Object, true
}
这里为什么使用 `item.Expiration > 0  && time.Now().UnixNano() > item.Expiration`,而不是使用 `item.Expired()`

内容来源: patrickmn/go-cache