48 lines
880 B
Go
48 lines
880 B
Go
/*
|
||
* 版权属于:yitter(yitter@126.com)
|
||
* 代码编辑:guoyahao
|
||
* 代码修订:yitter
|
||
* 开源地址:https://gitee.com/yitter/idgenerator
|
||
*/
|
||
package idgen
|
||
|
||
import (
|
||
"sync"
|
||
"yitidgen/contract"
|
||
)
|
||
|
||
var ins *YitIdHelper
|
||
var once sync.Once
|
||
|
||
type YitIdHelper struct {
|
||
idGenInstance interface {
|
||
NewLong() uint64
|
||
}
|
||
}
|
||
|
||
func GetIns() *YitIdHelper {
|
||
once.Do(func() {
|
||
ins = &YitIdHelper{}
|
||
})
|
||
return ins
|
||
}
|
||
|
||
func (yih *YitIdHelper) GetIdGenInstance() interface{} {
|
||
return yih.idGenInstance
|
||
}
|
||
|
||
func (yih *YitIdHelper) SetIdGenerator(options *contract.IdGeneratorOptions) {
|
||
yih.idGenInstance = NewDefaultIdGenerator(options)
|
||
}
|
||
|
||
func (yih *YitIdHelper) NextId() uint64 {
|
||
once.Do(func() {
|
||
if yih.idGenInstance == nil {
|
||
options := contract.NewIdGeneratorOptions(1)
|
||
yih.idGenInstance = NewDefaultIdGenerator(options)
|
||
}
|
||
})
|
||
|
||
return yih.idGenInstance.NewLong()
|
||
}
|