Documentation ¶
Index ¶
- Constants
- Variables
- func RandomHardwareAddrFunc() (net.HardwareAddr, error)
- type Bytes
- type Gen
- type Generator
- type HWAddrFunc
- type NullUUID
- type ShortStringer
- type Timestamp
- type UUID
- func FastMakeV4() UUID
- func FromBytes(input []byte) (UUID, error)
- func FromBytesOrNil(input []byte) UUID
- func FromString(input string) (UUID, error)
- func FromStringOrNil(input string) UUID
- func FromUint128(input uint128.Uint128) UUID
- func MakeV4() UUID
- func Must(u UUID, err error) UUID
- func NewPopulatedUUID(r interface{ ... }) *UUID
- func NewV1() (UUID, error)
- func NewV3(ns UUID, name string) UUID
- func NewV4() (UUID, error)
- func NewV5(ns UUID, name string) UUID
- func (u *UUID) DeterministicV4(i, n uint64)
- func (u UUID) Equal(t UUID) bool
- func (u UUID) GetBytes() []byte
- func (u *UUID) GetBytesMut() []byte
- func (u UUID) MarshalBinary() ([]byte, error)
- func (u UUID) MarshalJSON() ([]byte, error)
- func (u UUID) MarshalText() ([]byte, error)
- func (u UUID) MarshalTo(data []byte) (int, error)
- func (u *UUID) Scan(src interface{}) error
- func (u *UUID) SetVariant(v byte)
- func (u *UUID) SetVersion(v byte)
- func (u UUID) Short() string
- func (u UUID) Size() int
- func (u UUID) String() string
- func (u UUID) StringBytes(buf []byte)
- func (u UUID) ToUint128() uint128.Uint128
- func (u *UUID) Unmarshal(data []byte) error
- func (u *UUID) UnmarshalBinary(data []byte) error
- func (u *UUID) UnmarshalJSON(data []byte) error
- func (u *UUID) UnmarshalText(text []byte) error
- func (u UUID) Value() (driver.Value, error)
- func (u UUID) Variant() byte
- func (u UUID) Version() byte
Constants ¶
const ( V1 byte // Version 1 (date-time and MAC address) V3 // Version 3 (namespace name-based) V4 // Version 4 (random) V5 // Version 5 (namespace name-based) )
UUID versions.
const ( VariantNCS byte = iota VariantRFC4122 VariantMicrosoft VariantFuture )
UUID layout variants.
const RFC4122StrSize = 36
RFC4122StrSize of a size of the RFC-4122 string representation of UUID.
const Size = 16
Size of a UUID in bytes.
Variables ¶
var ( NamespaceDNS = Must(FromString("6ba7b810-9dad-11d1-80b4-00c04fd430c8")) NamespaceURL = Must(FromString("6ba7b811-9dad-11d1-80b4-00c04fd430c8")) NamespaceOID = Must(FromString("6ba7b812-9dad-11d1-80b4-00c04fd430c8")) NamespaceX500 = Must(FromString("6ba7b814-9dad-11d1-80b4-00c04fd430c8")) )
Predefined namespace UUIDs.
var Max = FromUint128(uint128.FromInts(math.MaxUint64, math.MaxUint64))
Max is the maximum possible UUID, which has all 128 bits set to 1.
var Nil = UUID{}
Nil is the nil UUID, as specified in RFC-4122, which has all 128 bits set to zero.
Functions ¶
func RandomHardwareAddrFunc ¶
func RandomHardwareAddrFunc() (net.HardwareAddr, error)
RandomHardwareAddrFunc returns a random hardware address, with the multicast and local-admin bits set as per the IEEE802 spec.
Types ¶
type Bytes ¶
type Bytes []byte
Bytes represents a byte slice which is intended to be interpreted as a binary encoding of a UUID.
type Gen ¶
type Gen struct {
// contains filtered or unexported fields
}
Gen is a reference UUID generator based on the specifications laid out in RFC-4122 and DCE 1.1: Authentication and Security Services. This type satisfies the Generator interface as defined in this package.
For consumers who are generating V1 UUIDs, but don't want to expose the MAC address of the node generating the UUIDs, the NewGenWithHWAF() function has been provided as a convenience. See the function's documentation for more info.
The authors of this package do not feel that the majority of users will need to obfuscate their MAC address, and so we recommend using NewGen() to create a new generator.
func NewGen ¶
func NewGen() *Gen
NewGen returns a new instance of Gen with some default values set. Most people should use this. NewGen by default uses crypto/rand.Reader as its source of randomness.
func NewGenWithHWAF ¶
func NewGenWithHWAF(hwaf HWAddrFunc) *Gen
NewGenWithHWAF builds a new UUID generator with the HWAddrFunc provided. Most consumers should use NewGen() instead.
This is used so that consumers can generate their own MAC addresses, for use in the generated UUIDs, if there is some concern about exposing the physical address of the machine generating the UUID.
The Gen generator will only invoke the HWAddrFunc once, and cache that MAC address for all the future UUIDs generated by it. If you'd like to switch the MAC address being used, you'll need to create a new generator using this function.
func NewGenWithReader ¶
NewGenWithReader returns a new instance of gen which uses r as its source of randomness.
type Generator ¶
type Generator interface { NewV1() (UUID, error) // NewV2(domain byte) (UUID, error) // CRL: Removed support for V2. NewV3(ns UUID, name string) UUID NewV4() (UUID, error) NewV5(ns UUID, name string) UUID }
Generator provides an interface for generating UUIDs.
type HWAddrFunc ¶
type HWAddrFunc func() (net.HardwareAddr, error)
HWAddrFunc is the function type used to provide hardware (MAC) addresses.
type NullUUID ¶
NullUUID can be used with the standard sql package to represent a UUID value that can be NULL in the database.
func (NullUUID) MarshalJSON ¶
MarshalJSON marshals the NullUUID as null or the nested UUID
func (*NullUUID) UnmarshalJSON ¶
UnmarshalJSON unmarshals a NullUUID
type ShortStringer ¶
type ShortStringer UUID
ShortStringer implements fmt.Stringer to output Short() on String().
func (ShortStringer) String ¶
func (s ShortStringer) String() string
String is part of fmt.Stringer.
type Timestamp ¶
type Timestamp uint64
Timestamp is the count of 100-nanosecond intervals since 00:00:00.00, 15 October 1582 within a V1 UUID. This type has no meaning for V2-V5 UUIDs since they don't have an embedded timestamp.
func TimestampFromV1 ¶
TimestampFromV1 returns the Timestamp embedded within a V1 UUID. Returns an error if the UUID is any version other than 1.
type UUID ¶
UUID is an array type to represent the value of a UUID, as defined in RFC-4122.
func FastMakeV4 ¶
func FastMakeV4() UUID
FastMakeV4 generates a UUID using a fast but not cryptographically secure source of randomness.
func FromBytes ¶
FromBytes returns a UUID generated from the raw byte slice input. It will return an error if the slice isn't 16 bytes long.
func FromBytesOrNil ¶
FromBytesOrNil returns a UUID generated from the raw byte slice input. Same behavior as FromBytes(), but returns uuid.Nil instead of an error.
func FromString ¶
FromString returns a UUID parsed from the input string. Input is expected in a form accepted by UnmarshalText.
func FromStringOrNil ¶
FromStringOrNil returns a UUID parsed from the input string. Same behavior as FromString(), but returns uuid.Nil instead of an error.
func FromUint128 ¶
FromUint128 delegates to FromBytes and wraps the result in a UUID.
func Must ¶
Must is a helper that wraps a call to a function returning (UUID, error) and panics if the error is non-nil. It is intended for use in variable initializations such as
var packageUUID = uuid.Must(uuid.FromString("123e4567-e89b-12d3-a456-426655440000"))
func NewPopulatedUUID ¶
NewPopulatedUUID returns a populated UUID.
func (*UUID) DeterministicV4 ¶
DeterministicV4 overwrites this UUID with one computed deterministically to evenly fill the space of possible V4 UUIDs. `n` represents how many UUIDs will fill the space and `i` is an index into these `n` (and thus must be in the range `[0,n)`). The resulting UUIDs will be unique, evenly-spaced, and sorted.
func (UUID) Equal ¶
Equal returns true iff the receiver equals the argument.
This method exists only to conform to the API expected by gogoproto's generated Equal implementations.
func (UUID) GetBytes ¶
GetBytes returns the UUID as a byte slice. It incurs an allocation if the return value escapes.
func (*UUID) GetBytesMut ¶
GetBytesMut returns the UUID as a mutable byte slice. Unlike GetBytes, it does not necessarily incur an allocation if the return value escapes. Instead, the return value escaping will cause the method's receiver (and any struct that it is a part of) to escape. Use only if GetBytes is causing an allocation and the UUID is already on the heap.
func (UUID) MarshalBinary ¶
MarshalBinary implements the encoding.BinaryMarshaler interface.
func (UUID) MarshalJSON ¶
MarshalJSON returns the JSON encoding of u.
func (UUID) MarshalText ¶
MarshalText implements the encoding.TextMarshaler interface. The encoding is the same as returned by the String() method.
func (*UUID) Scan ¶
Scan implements the sql.Scanner interface. A 16-byte slice will be handled by UnmarshalBinary, while a longer byte slice or a string will be handled by UnmarshalText.
func (UUID) String ¶
String returns a canonical RFC-4122 string representation of the UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
func (UUID) StringBytes ¶
StringBytes writes the result of String directly into a buffer, which must have a length of at least 36.
func (*UUID) UnmarshalBinary ¶
UnmarshalBinary implements the encoding.BinaryUnmarshaler interface. It will return an error if the slice isn't 16 bytes long.
func (*UUID) UnmarshalJSON ¶
UnmarshalJSON unmarshals the JSON encoded data into u.
func (*UUID) UnmarshalText ¶
UnmarshalText implements the encoding.TextUnmarshaler interface. Following formats are supported:
"6ba7b810-9dad-11d1-80b4-00c04fd430c8", "{6ba7b810-9dad-11d1-80b4-00c04fd430c8}", "urn:uuid:6ba7b810-9dad-11d1-80b4-00c04fd430c8" "6ba7b8109dad11d180b400c04fd430c8" "{6ba7b8109dad11d180b400c04fd430c8}", "{6ba7b810-9dad-11d1-80b4-00c04fd430c8}", "urn:uuid:6ba7b8109dad11d180b400c04fd430c8", "urn:uuid:6ba7b810-9dad-11d1-80b4-00c04fd430c8", "6ba7-b810-9dad-11d1-80b4-00c0-4fd4-30c8"
ABNF for supported UUID text representation follows:
URN := 'urn' UUID-NID := 'uuid' hexdig := '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' hexoct := hexdig hexdig 2hexoct := hexoct hexoct 4hexoct := 2hexoct 2hexoct 6hexoct := 4hexoct 2hexoct 12hexoct := 6hexoct 6hexoct hashlike := 12hexoct hyphenated := hyphen after any group of 4 hexdig Ex.6ba7-b810-9dad-11d1-80b4-00c0-4fd4-30c8 Ex.6ba7-b810-9dad11d1-80b400c0-4fd4-30c8 uuid := hyphenated | hashlike | braced | urn braced := '{' hyphenated '}' | '{' hashlike '}' urn := URN ':' UUID-NID ':' hyphenated