# README
group
import "github.com/ccheers/xpkg/container/group"
Package group provides a sample lazy load container. The group only creating a new object not until the object is needed by user. And it will cache all the objects to reduce the creation of object.
Index
type Group
Group is a lazy load container.
type Group struct {
sync.RWMutex
// contains filtered or unexported fields
}
func NewGroup
func NewGroup(new func() interface{}) *Group
NewGroup news a group container.
func (*Group) Clear
func (g *Group) Clear()
Clear deletes all objects.
func (*Group) Get
func (g *Group) Get(key string) interface{}
Get gets the object by the given key.
Example
{
new := func() interface{} {
fmt.Println("Only Once")
return &Counter{}
}
group := NewGroup(new)
group.Get("pass").(*Counter).Incr()
group.Get("pass").(*Counter).Incr()
}
Output
Only Once
func (*Group) Reset
func (g *Group) Reset(new func() interface{})
Reset resets the new function and deletes all existing objects.
Example
{
new := func() interface{} {
return &Counter{}
}
group := NewGroup(new)
newV2 := func() interface{} {
fmt.Println("New V2")
return &Counter{}
}
group.Reset(newV2)
group.Get("pass").(*Counter).Incr()
}
Output
New V2
Generated by gomarkdoc
# Functions
NewGroup news a group container.