parent
1ffadf5510
commit
6177c2cc1d
12
cast.go
12
cast.go
@ -6,7 +6,11 @@
|
|||||||
// Package cast provides easy and safe casting in Go.
|
// Package cast provides easy and safe casting in Go.
|
||||||
package cast
|
package cast
|
||||||
|
|
||||||
import "time"
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/google/uuid"
|
||||||
|
)
|
||||||
|
|
||||||
// ToBool casts an interface to a bool type.
|
// ToBool casts an interface to a bool type.
|
||||||
func ToBool(i interface{}) bool {
|
func ToBool(i interface{}) bool {
|
||||||
@ -169,3 +173,9 @@ func ToDurationSlice(i interface{}) []time.Duration {
|
|||||||
v, _ := ToDurationSliceE(i)
|
v, _ := ToDurationSliceE(i)
|
||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ToUUID casts an interface to a uint type.
|
||||||
|
func ToUUID(i interface{}) uuid.UUID {
|
||||||
|
v, _ := ToUUIDE(i)
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
20
caste.go
20
caste.go
@ -14,6 +14,8 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/google/uuid"
|
||||||
)
|
)
|
||||||
|
|
||||||
var errNegativeNotAllowed = errors.New("unable to cast negative value")
|
var errNegativeNotAllowed = errors.New("unable to cast negative value")
|
||||||
@ -756,6 +758,24 @@ func ToUint8E(i interface{}) (uint8, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ToUUIDE casts an interface to a uint type.
|
||||||
|
func ToUUIDE(i interface{}) (uuid.UUID, error) {
|
||||||
|
i = indirect(i)
|
||||||
|
var b uuid.UUID
|
||||||
|
|
||||||
|
switch s := i.(type) {
|
||||||
|
case string:
|
||||||
|
return uuid.Parse(s)
|
||||||
|
case interface{}:
|
||||||
|
if str, err := ToStringE(s); err == nil {
|
||||||
|
return uuid.Parse(str)
|
||||||
|
}
|
||||||
|
return b, fmt.Errorf("unable to cast %#v of type %T to UUID", i, i)
|
||||||
|
default:
|
||||||
|
return b, fmt.Errorf("unable to cast %#v of type %T to UUID", i, i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// From html/template/content.go
|
// From html/template/content.go
|
||||||
// Copyright 2011 The Go Authors. All rights reserved.
|
// Copyright 2011 The Go Authors. All rights reserved.
|
||||||
// indirect returns the value, after dereferencing as many times
|
// indirect returns the value, after dereferencing as many times
|
||||||
|
3
go.mod
3
go.mod
@ -2,6 +2,9 @@ module github.com/spf13/cast
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||||
|
github.com/google/uuid v1.1.1
|
||||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||||
github.com/stretchr/testify v1.2.2
|
github.com/stretchr/testify v1.2.2
|
||||||
)
|
)
|
||||||
|
|
||||||
|
go 1.13
|
||||||
|
2
go.sum
2
go.sum
@ -1,5 +1,7 @@
|
|||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
|
||||||
|
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w=
|
github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w=
|
||||||
|
Loading…
Reference in New Issue
Block a user