출처: https://qiita.com/kwashi/items/3be0767168075cb7e3f0
Golang에서 아래와 같은 문자열 유니크 ID를 만드는 방법을 설명한다.
0000XSNJG0MQJHBF4R33AHWHGX
oklog/ulid 라는 golang 라이브러리를 사용한다.
Git: k-washi/bss-utils/uniquegenerator
프로그램
아래의 프로그램처럼 시간에 의존한 유니크 ID를 만들고 있다. 또 Validation 도 만들었다.
package uniquegenerator
import ( "errors" "math/rand"
"github.com/oklog/ulid/v2"
"time" )
var ( t = time.Unix(1000000, 0) entropy = ulid.Monotonic(rand.New(rand.NewSource(t.UnixNano())), 0) )
//generateUlid ex. output: 0000XSNJG0MQJHBF4QX1EFD6Y3 func generateUlid() ulid.ULID { return ulid.MustNew(ulid.Timestamp(t), entropy) }
//Get ex. output: 0000XSNJG0MQJHBF4QX1EFD6Y3 func Get() string { return generateUlid().String() }
//Validation ulid string check size func Validation(id string) error { if len(id) != ulid.EncodedSize { return errors.New("Unique ID generator validation error: length is not match") } return nil } |