golang ユニークなID生成 xid
xid(https://github.com/rs/xid)
Go製のUnique ID Generator「xid」について - Qiita
スケールする:対象を拡大・縮小する
UUID:Universally Unique Identifier。ユニークなID。128ビット(16Byte)。16進法が多い。UUIDがかぶる確率は230京回らしい。(https://qiita.com/ta_ta_ta_miya/items/1f8f71db3c1bf2dfb7ea)
Snowflake:Twitter社が作ったユニークなID生成のWebサービス。
全体で12Byte。UUID>xid>Snowflake。20文字のlower caseの英数字。
package main import ( "fmt" "github.com/rs/xid" ) func main() { // idを生成 guid := xid.New() //:=は何? fmt.Println(guid.String()) // binaryの各partの情報 machine := guid.Machine() pid := guid.Pid() time := guid.Time() counter := guid.Counter() fmt.Printf("machine: %v, pid: %v, time: %v, counter: %v\n", machine, pid, time, counter) }
xidtest.go
$ go run xidtest.go ba0h6ajjcl7tb9gdr440 machine: [115 101 79], pid: 54694, time: 2018-02-12 13:08:10 +0900 JST, counter: 907528
このような結果になる。