diff --git a/Go/README.md b/Go/README.md index fcfd866..5d603e8 100644 --- a/Go/README.md +++ b/Go/README.md @@ -5,6 +5,10 @@ 1.go 1.16 2. ÆôÓÃGo-Modules +``` +go env -w GO111MODULE=on +go env -w GOPROXY=https://goproxy.cn,https://goproxy.io,direct +``` ## Go´úÂëʾÀý diff --git a/Go/source/core/snowWorkerM1.go b/Go/source/core/snowWorkerM1.go index 4115092..d33f819 100644 --- a/Go/source/core/snowWorkerM1.go +++ b/Go/source/core/snowWorkerM1.go @@ -34,46 +34,46 @@ type SnowWorkerM1 struct { } func NewSnowWorkerM1(options *contract.IdGeneratorOptions) contract.ISnowWorker { - var WorkerIdBitLength byte - var SeqBitLength byte - var MaxSeqNumber uint32 + var workerIdBitLength byte + var seqBitLength byte + var maxSeqNumber uint32 - var WorkerId = options.WorkerId + var workerId = options.WorkerId if options.WorkerIdBitLength == 0 { - WorkerIdBitLength = 6 + workerIdBitLength = 6 } else { - WorkerIdBitLength = options.WorkerIdBitLength + workerIdBitLength = options.WorkerIdBitLength } if options.SeqBitLength == 0 { - SeqBitLength = 6 + seqBitLength = 6 } else { - SeqBitLength = options.SeqBitLength + seqBitLength = options.SeqBitLength } if options.MaxSeqNumber > 0 { - MaxSeqNumber = options.MaxSeqNumber + maxSeqNumber = options.MaxSeqNumber } else { - MaxSeqNumber = uint32(math.Pow(2, float64(options.SeqBitLength))) - 1 + maxSeqNumber = uint32(math.Pow(2, float64(options.SeqBitLength))) - 1 } - var MinSeqNumber = options.MinSeqNumber - var TopOverCostCount = options.TopOverCostCount + var minSeqNumber = options.MinSeqNumber + var topOverCostCount = options.TopOverCostCount - var BaseTime int64 + var baseTime int64 if options.BaseTime != 0 { - BaseTime = options.BaseTime + baseTime = options.BaseTime } else { - BaseTime = 1582136402000 + baseTime = 1582136402000 } timestampShift := (byte)(options.WorkerIdBitLength + options.SeqBitLength) currentSeqNumber := options.MinSeqNumber return &SnowWorkerM1{ - BaseTime: BaseTime, - WorkerId: WorkerId, - WorkerIdBitLength: WorkerIdBitLength, - SeqBitLength: SeqBitLength, - MaxSeqNumber: MaxSeqNumber, - MinSeqNumber: MinSeqNumber, - TopOverCostCount: TopOverCostCount, + BaseTime: baseTime, + WorkerId: workerId, + WorkerIdBitLength: workerIdBitLength, + SeqBitLength: seqBitLength, + MaxSeqNumber: maxSeqNumber, + MinSeqNumber: minSeqNumber, + TopOverCostCount: topOverCostCount, _TimestampShift: timestampShift, _CurrentSeqNumber: currentSeqNumber} } diff --git a/Go/source/idgen/DefaultIdGenerator.go b/Go/source/idgen/DefaultIdGenerator.go index a137b21..cf396aa 100644 --- a/Go/source/idgen/DefaultIdGenerator.go +++ b/Go/source/idgen/DefaultIdGenerator.go @@ -19,54 +19,54 @@ type DefaultIdGenerator struct { IdGeneratorException contract.IdGeneratorException } -func NewDefaultIdGenerator(Options *contract.IdGeneratorOptions) *DefaultIdGenerator { - if Options == nil { +func NewDefaultIdGenerator(options *contract.IdGeneratorOptions) *DefaultIdGenerator { + if options == nil { panic("dig.Options error.") } var minTime = time.Now().AddDate(-50, 0, 0).UnixNano() / 1e6 - if minTime == 0 || Options.BaseTime < minTime || Options.BaseTime > time.Now().UnixNano()/1e6 { + if minTime == 0 || options.BaseTime < minTime || options.BaseTime > time.Now().UnixNano()/1e6 { panic("BaseTime error.") } - if Options.SeqBitLength+Options.WorkerIdBitLength > 22 { + if options.SeqBitLength+options.WorkerIdBitLength > 22 { panic("error:WorkerIdBitLength + SeqBitLength <= 22") } - maxWorkerIdNumber := uint16(math.Pow(float64(2), float64(Options.WorkerIdBitLength))) - 1 - if Options.WorkerId > maxWorkerIdNumber { + maxWorkerIdNumber := uint16(math.Pow(float64(2), float64(options.WorkerIdBitLength))) - 1 + if options.WorkerId > maxWorkerIdNumber { panic("WorkerId error. (range:[1, "+ string(maxWorkerIdNumber)+ "]") } - if Options.SeqBitLength < 2 || Options.SeqBitLength > 21 { + if options.SeqBitLength < 2 || options.SeqBitLength > 21 { panic("SeqBitLength error. (range:[2, 21])") } - maxSeqNumber := uint32(math.Pow(2, float64(Options.SeqBitLength))) - 1 - if Options.MaxSeqNumber > maxSeqNumber { + maxSeqNumber := uint32(math.Pow(2, float64(options.SeqBitLength))) - 1 + if options.MaxSeqNumber > maxSeqNumber { panic("MaxSeqNumber error. (range:[1, "+ string(maxSeqNumber)+ "]") } - if Options.MinSeqNumber > maxSeqNumber { + if options.MinSeqNumber > maxSeqNumber { panic("MinSeqNumber error. (range:[1, "+ string(maxSeqNumber)+ "]") } var snowWorker contract.ISnowWorker - switch Options.Method { + switch options.Method { case 1: - snowWorker = core.NewSnowWorkerM1(Options) + snowWorker = core.NewSnowWorkerM1(options) case 2: - snowWorker = core.NewSnowWorkerM2(Options) + snowWorker = core.NewSnowWorkerM2(options) default: - snowWorker = core.NewSnowWorkerM1(Options) + snowWorker = core.NewSnowWorkerM1(options) } - if Options.Method == 1 { + if options.Method == 1 { time.Sleep(time.Duration(500) * time.Microsecond) } return &DefaultIdGenerator{ - Options: Options, + Options: options, SnowWorker: snowWorker, } }