Source File
version7.go
Belonging Package
github.com/google/uuid
// Copyright 2023 Google Inc. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.package uuidimport ()// UUID version 7 features a time-ordered value field derived from the widely// implemented and well known Unix Epoch timestamp source,// the number of milliseconds seconds since midnight 1 Jan 1970 UTC, leap seconds excluded.// As well as improved entropy characteristics over versions 1 or 6.//// see https://datatracker.ietf.org/doc/html/draft-peabody-dispatch-new-uuid-format-03#name-uuid-version-7//// Implementations SHOULD utilize UUID version 7 over UUID version 1 and 6 if possible.//// NewV7 returns a Version 7 UUID based on the current time(Unix Epoch).// Uses the randomness pool if it was enabled with EnableRandPool.// On error, NewV7 returns Nil and an errorfunc () (UUID, error) {, := NewRandom()if != nil {return ,}makeV7([:])return , nil}// NewV7FromReader returns a Version 7 UUID based on the current time(Unix Epoch).// it use NewRandomFromReader fill random bits.// On error, NewV7FromReader returns Nil and an error.func ( io.Reader) (UUID, error) {, := NewRandomFromReader()if != nil {return ,}makeV7([:])return , nil}// makeV7 fill 48 bits time (uuid[0] - uuid[5]), set version b0111 (uuid[6])// uuid[8] already has the right version number (Variant is 10)// see function NewV7 and NewV7FromReaderfunc ( []byte) {/*0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| unix_ts_ms |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| unix_ts_ms | ver | rand_a |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|var| rand_b |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| rand_b |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+*/_ = [15] // bounds check:= timeNow().UnixMilli()[0] = byte( >> 40)[1] = byte( >> 32)[2] = byte( >> 24)[3] = byte( >> 16)[4] = byte( >> 8)[5] = byte()[6] = 0x70 | ([6] & 0x0F)// uuid[8] has already has right version}
![]() |
The pages are generated with Golds v0.7.6. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |