gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/myx/pool/poolmap.go (about) 1 package pool 2 3 func NewPoolMap() (obj *PoolMap) { 4 obj = &PoolMap{ 5 data: map[string]*Pool{}, 6 } 7 return 8 } 9 10 type PoolMap struct { 11 data map[string]*Pool 12 } 13 14 func (m *PoolMap) getPool(key string) *Pool { 15 p, ok := m.data[key] 16 if ok == false { 17 p = NewPool() 18 m.data[key] = p 19 } 20 21 return p 22 } 23 func (m *PoolMap) Count(key string) int { 24 return m.getPool(key).count 25 } 26 func (m *PoolMap) Dispose() { 27 for _, val := range m.data { 28 val.Dispose() 29 } 30 31 m.data = nil 32 } 33 34 func (m *PoolMap) Get(key string) interface{} { 35 return m.getPool(key).GetItem() 36 } 37 38 func (m *PoolMap) GetOrNew(key string, args ...interface{}) interface{} { 39 return m.getPool(key).GetOrNewItem(args...) 40 } 41 42 func (m *PoolMap) Put(key string, item interface{}) { 43 m.getPool(key).PutItem(item) 44 } 45 46 func (m *PoolMap) RegisterPool(key string, creator func(...interface{}) interface{}) { 47 p := m.getPool(key) 48 p.creator = creator 49 }