package
1.2.4
Repository: https://github.com/ccheers/xpkg.git
Documentation: pkg.go.dev

# 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.

# Structs

Group is a lazy load container.