Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = ["uniqid.go"],
importpath = "go-common/app/common/openplatform/random",
tags = ["automanaged"],
visibility = ["//visibility:public"],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,35 @@
package random
import (
"math"
"math/rand"
"time"
)
var (
rnd *rand.Rand
ch chan int64
)
func init() {
rnd = rand.New(rand.NewSource(time.Now().UnixNano()))
ch = make(chan int64, 1000)
go randomBase(ch)
}
func randomBase(c chan int64) {
for {
c <- rnd.Int63()
}
}
//Uniqid 随机数length是需要返回的长度只支持10~19位
func Uniqid(length int) int64 {
if length < 10 || length > 19 {
return 0
}
prefix := (time.Now().UnixNano() / 100000000) & 0x3fffffff
cut := int64(math.Pow10(length - 9))
suffix := <-ch % cut
return prefix*cut + suffix
}