Golang patterns

From wikinotes

Some design pattern implementations in go

Singleton

// threadsafe
// src: https://medium.com/golang-issue/how-singleton-pattern-works-with-golang-2fdd61cd5a7f

var once sync.Once

// type global
type singleton map[string]string

var (
	instance singleton
)

func NewClass() singleton {

	once.Do(func() { // <-- atomic, does not allow repeating

		instance = make(singleton) // <-- thread safe

	})

	return instance
}