写了一个方法进行功能测试
func main() {
cache := Constructor(3)
cache.put(11, 1)
cache.put(22, 2)
cache.put(33, 3)
cache.put(44, 4)
cache.put(55, 5)
cache.getCache()
cache.get(33)
fmt.Println("========== 获取数据之后 ===============")
cache.getCache()
}
发现:
当put大于缓存 limit 数量时,在缓存淘汰后,链表的 l.head.prev != nil
解决:
在代码的 55、57行,可加上:
l.end.next = nil
l.head.prev = nil
维持链表的头尾结点指向空指针会更严谨一些😄