package id import ( "sync" ) var ( generator IDGenerator once sync.Once ) type IDGenerator interface { generate() string } func New() string { once.Do(func() { generator = NewUUIDGenerator() }) return generator.generate() }