From 738a7555cfcd1af34de24b5420b841a77191b469 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 16 Jul 2021 21:38:28 +0800 Subject: [PATCH] init --- lru.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lru.go b/lru.go index b5df197..9dd5cb3 100644 --- a/lru.go +++ b/lru.go @@ -14,7 +14,7 @@ type LRU struct { Maxsize int } -func (lru LRU) Get(key string) string { +func (lru *LRU) Get(key string) string { i := lru.data[key] if i != nil { lru.ul.Remove(i.pos) @@ -25,12 +25,17 @@ func (lru LRU) Get(key string) string { } } -func (lru LRU) Set(key string, value string) { - i := &item{key: key, value: value} - lru.data[key] = i - lru.ul.Remove(i.pos) +func (lru *LRU) Set(key string, value string) { + i := lru.data[key] + if i == nil { + i = &item{key: key, value: value} + lru.data[key] = i + } else { + lru.ul.Remove(i.pos) + } lru.ul.PushBack(i) if lru.ul.Len() > lru.Maxsize { + delete(lru.data, lru.ul.Front().Value.(*item).key) lru.ul.Remove(lru.ul.Front()) } i.pos = lru.ul.Back()