1
0
mirror of https://github.com/google/uuid.git synced 2024-11-24 08:32:23 +02:00
Go package for UUIDs based on RFC 4122 and DCE 1.1: Authentication and Security Services.
Go to file
Joe Wreschnig edef28d0c8
Use a custom error type for invalid lengths, replacing fmt.Errorf (#69)
* Add benchmarks for different kinds of invalid UUIDs

Also add a test case for too-short UUIDs to ensure behavior doesn’t
change.

* Use a custom error type for invalid lengths, replacing `fmt.Errorf`

This significantly improves the speed of failed parses due to wrong
lengths. Previously the `fmt.Errorf` call dominated, making this the
most expensive error and more expensive than successfully parsing:

    BenchmarkParse-4                 29226529        36.1 ns/op
    BenchmarkParseBadLength-4         6923106       174 ns/op
    BenchmarkParseLen32Truncated-4   26641954        38.1 ns/op
    BenchmarkParseLen36Corrupted-4   19405598        59.5 ns/op

When the formatting is not required and done on-demand, the failure per
se is much faster:

    BenchmarkParse-4                 29641700        36.3 ns/op
    BenchmarkParseBadLength-4        58602537        20.0 ns/op
    BenchmarkParseLen32Truncated-4   30664791        43.6 ns/op
    BenchmarkParseLen36Corrupted-4   18882410        61.9 ns/op
2020-12-30 13:35:21 -06:00
.travis.yml Update .travis.yml 2016-11-28 11:12:14 -08:00
CONTRIBUTING.md Change a UUID from []byte to [16]byte along with other API changes. 2016-02-19 12:30:25 -08:00
CONTRIBUTORS Change a UUID from []byte to [16]byte along with other API changes. 2016-02-19 12:30:25 -08:00
dce.go A little error in the documentation of dce.go 2017-08-12 17:57:52 +01:00
doc.go remove the spurious executable bit from go source files 2016-02-25 22:45:49 -08:00
go.mod add go.mod file 2018-09-17 15:06:12 +02:00
hash.go fix some typos 2017-11-22 06:47:31 +01:00
json_test.go replace Must* funcs with a single generic Must func 2016-02-25 20:56:08 -08:00
LICENSE
marshal.go refactor (*UUID).UnmarshalText (#58) 2020-05-19 09:17:26 -05:00
node_js.go remove net when targeting JS 2017-11-29 12:54:27 +00:00
node_net.go remove net when targeting JS 2017-11-29 12:54:27 +00:00
node.go Add darkfeline's change to set ifname if no interface is found. 2019-02-27 15:05:49 -06:00
README.md Update README.md 2020-03-04 18:59:31 +04:00
seq_test.go fix some typos 2017-11-22 06:47:31 +01:00
sql_test.go make 'go vet' happy 2017-11-22 06:14:10 +01:00
sql.go sql: Support nil values 2017-03-03 14:59:38 -08:00
time.go make 'go vet' happy 2017-11-22 06:14:10 +01:00
util.go optimize internal parsing function -- avoid unsafe []byte parsing 2016-02-25 21:48:37 -08:00
uuid_test.go Use a custom error type for invalid lengths, replacing fmt.Errorf (#69) 2020-12-30 13:35:21 -06:00
uuid.go Use a custom error type for invalid lengths, replacing fmt.Errorf (#69) 2020-12-30 13:35:21 -06:00
version1.go Fix race in NewUUID() (#64) 2020-07-02 13:56:42 -05:00
version4.go Resolved code issues of gofmt and golint (#55) 2020-03-30 20:53:17 -05:00

uuid build status

The uuid package generates and inspects UUIDs based on RFC 4122 and DCE 1.1: Authentication and Security Services.

This package is based on the github.com/pborman/uuid package (previously named code.google.com/p/go-uuid). It differs from these earlier packages in that a UUID is a 16 byte array rather than a byte slice. One loss due to this change is the ability to represent an invalid UUID (vs a NIL UUID).

Install

go get github.com/google/uuid

Documentation

GoDoc

Full go doc style documentation for the package can be viewed online without installing this package by using the GoDoc site here: http://pkg.go.dev/github.com/google/uuid