2.8 KiB
		
	
	
	
	
	
			
		
		
	
	
			2.8 KiB
		
	
	
	
	
	
Go UUID implementation
This package provides RFC 4122 compliant UUIDs. It will generate the following:
- Version 1: based on timestamp and MAC address
 - Version 3: based on MD5 hash
 - Version 4: based on cryptographically secure random numbers
 - Version 5: based on SHA-1 hash
 
Functions NewV1, NewV3, NewV4, NewV5, New, NewHex and Parse() for generating versions 3, 4 and 5 UUIDs are as specified in RFC 4122.
Requirements
Go 1.4, 1.3, 1.2 and tip supported.
Recent Changes
- Removed use of OS Thread locking and runtime package requirement
 - Changed String() output to CleanHyphen to match the canonical standard
 - Plenty of minor change and housekeeping
 - Removed default saver and replaced with interface
 - API changes to simplify use.
 - Added formatting support for user defined formats
 - Added support for Google App Engine
 - Variant type bits are now set correctly
 - Variant type can now be retrieved more efficiently
 - New tests for variant setting to confirm correctness
 - New tests added to confirm proper version setting
 - Type UUID change to UUIDArray for V3-5 UUIDs and UUIDStruct added for V1 UUIDs ** These implement the BinaryMarshaller and BinaryUnmarshaller interfaces
 - New was added to create a base UUID from a []byte slice - this uses UUIDArray
 - ParseHex was renamed to ParseUUID
 - NewHex now performs unsafe creation of UUID from a hex string
 - NewV3 and NewV5 now take anything that implements the Stringer interface
 - V1 UUIDs can now be created
 - The printing format can be changed
 
Installation
Use the go tool:
$ go get github.com/twinj/uuid
Usage
See documentation and examples for more information.
var config = uuid.StateSaverConfig{SaveReport: true, SaveSchedule: 30 * time.Minute}
uuid.SetupFileSystemStateSaver(config)
u1 := uuid.NewV1()
uP, _ := uuid.Parse("6ba7b810-9dad-11d1-80b4-00c04fd430c8")
u3 := uuid.NewV3(uP, uuid.Name("test"))
u4 := uuid.NewV4()
fmt.Printf(print, u4.Version(), u4.Variant(), u4)
u5 := uuid.NewV5(uuid.NamespaceURL, uuid.Name("test"))
if uuid.Equal(u1, u3) {
	fmt.Printf("Will never happen")
}
fmt.Printf(uuid.Formatter(u5, uuid.CurlyHyphen))
uuid.SwitchFormat(uuid.BracketHyphen)
Copyright
This is a derivative work
Orginal version from Copyright (C) 2011 by Krzysztof Kowalik chris@nu7hat.ch. See COPYING file for details.
Also see: Algorithm details in RFC 4122.
Copyright (C) 2014 twinj@github.com See LICENSE file for details.

