README ¶
cast
Easy and safe casting from one type to another in Go
Don’t Panic! ... Cast.
Optimized version for CoreStore.
What is Cast?
Cast is a library to convert between different go types in a consistent and easy way.
Cast provides simple functions to easily convert a number to a string, an interface into a bool, etc. Cast does this intelligently when an obvious conversion is possible. It doesn’t make any attempts to guess what you meant, for example you can only convert a string to an int when it is a string representation of an int such as “8”. Cast was developed for use in Hugo, a website engine which uses YAML, TOML or JSON for meta data.
Why use Cast?
When working with dynamic data in Go you often need to cast or convert the data from one type into another. Cast goes beyond just using type assertion (though it uses that when possible) to provide a very straightforward and convenient library.
If you are working with interfaces to handle things like dynamic content you’ll need an easy way to convert an interface into a given type. This is the library for you.
If you are taking in data from YAML, TOML or JSON or other formats which lack full types, then Cast is the library for you.
Usage
Cast provides a handful of To_____ methods. These methods will always return the desired type. If input is provided that will not convert to that type, the 0 or nil value for that type will be returned.
Cast also provides identical methods To_____E. These return the same result as the To_____ methods, plus an additional error which tells you if it successfully converted. Using these methods you can tell the difference between when the input matched the zero value or when the conversion failed and the zero value was returned.
The following examples are merely a sample of what is available. Please review the code for a complete set.
Example ‘ToString’:
cast.ToString("mayonegg") // "mayonegg"
cast.ToString(8) // "8"
cast.ToString(8.31) // "8.31"
cast.ToString([]byte("one time")) // "one time"
cast.ToString(nil) // ""
var foo interface{} = "one more time"
cast.ToString(foo) // "one more time"
Example ‘ToInt’:
cast.ToInt(8) // 8
cast.ToInt(8.31) // 8
cast.ToInt("8") // 8
cast.ToInt(true) // 1
cast.ToInt(false) // 0
var eight interface{} = 8
cast.ToInt(eight) // 8
cast.ToInt(nil) // 0
Documentation ¶
Overview ¶
Package conv - easy and safe casting from one type to another.
CoreStore specific types have been additionally implemented for example in function ToStringE().
Functions ending with ...E() return an error which has always the bahaviour of not being valid.
Index ¶
- Variables
- func StringToDate(s string, loc *time.Location) (time.Time, error)
- func ToBool(i interface{}) bool
- func ToBoolE(i interface{}) (bool, error)
- func ToByte(i interface{}) []byte
- func ToByteE(i interface{}) ([]byte, error)
- func ToDataSlice(i interface{}) [][]string
- func ToDataSliceE(i interface{}) ([][]string, error)
- func ToDuration(i interface{}) time.Duration
- func ToDurationE(i interface{}) (d time.Duration, err error)
- func ToFloat64(i interface{}) float64
- func ToFloat64E(i interface{}) (float64, error)
- func ToInt(i interface{}) int
- func ToInt64(i interface{}) int64
- func ToInt64E(i interface{}) (int64, error)
- func ToIntE(i interface{}) (int, error)
- func ToIntSlice(i interface{}) []int
- func ToIntSliceE(i interface{}) ([]int, error)
- func ToSlice(i interface{}) []interface{}
- func ToSliceE(i interface{}) ([]interface{}, error)
- func ToString(i interface{}) string
- func ToStringE(i interface{}) (string, error)
- func ToStringMap(i interface{}) map[string]interface{}
- func ToStringMapBool(i interface{}) map[string]bool
- func ToStringMapBoolE(i interface{}) (map[string]bool, error)
- func ToStringMapE(i interface{}) (map[string]interface{}, error)
- func ToStringMapString(i interface{}) map[string]string
- func ToStringMapStringE(i interface{}) (map[string]string, error)
- func ToStringMapStringSlice(i interface{}) map[string][]string
- func ToStringMapStringSliceE(i interface{}) (map[string][]string, error)
- func ToStringSlice(i interface{}) []string
- func ToStringSliceE(i interface{}) ([]string, error)
- func ToTime(i interface{}) time.Time
- func ToTimeE(i interface{}) (time.Time, error)
- func ToUint(i interface{}) uint
- func ToUintE(i interface{}) (uint, error)
Constants ¶
This section is empty.
Variables ¶
var TimeFormats = [...]string{ time.RFC3339, "2006-01-02T15:04:05", "2006-01-02 15:04:05", time.RFC1123Z, time.RFC1123, time.RFC822Z, time.RFC822, time.ANSIC, time.UnixDate, time.RubyDate, "2006-01-02 15:04:05Z07:00", "02 Jan 06 15:04 MST", "2006-01-02", "02 Jan 2006", "2006-01-02 15:04:05 -07:00", "2006-01-02 15:04:05 -0700", }
TimeFormats available time format to parse
Functions ¶
func StringToDate ¶
StringToDate casts an empty interface to a time.Time. Location can be nil, then time.Local is the default value.
func ToBoolE ¶
ToBoolE casts an empty interface to a bool. If a type implements function
ToBool() bool
this function will get called.
func ToByteE ¶
ToByteE casts an empty interface to a byte slice. Faster than ToStringE because ToByteE avoids some copying of data. Use wisely.
func ToDataSlice ¶
func ToDataSlice(i interface{}) [][]string
func ToDataSliceE ¶
ToDataSliceE casts an empty interface to a [][]string. Supports: map[string]string and []string if it contains semicolon (as in CSV)
func ToDuration ¶
func ToDurationE ¶
ToDurationE casts an empty interface to time.Duration.
func ToFloat64E ¶
ToFloat64E casts an empty interface to a float64.
func ToIntSlice ¶
func ToIntSlice(i interface{}) []int
func ToIntSliceE ¶
ToIntSliceE casts an empty interface to a []int.
func ToSliceE ¶
func ToSliceE(i interface{}) ([]interface{}, error)
ToSliceE casts an empty interface to a []interface{}.
func ToStringMap ¶
func ToStringMap(i interface{}) map[string]interface{}
func ToStringMapBool ¶
func ToStringMapBoolE ¶
ToStringMapBoolE casts an empty interface to a map[string]bool.
func ToStringMapE ¶
ToStringMapE casts an empty interface to a map[string]interface{}.
func ToStringMapString ¶
func ToStringMapStringE ¶
ToStringMapStringE casts an empty interface to a map[string]string.
func ToStringMapStringSlice ¶
func ToStringMapStringSliceE ¶
ToStringMapStringSliceE casts an empty interface to a map[string][]string.
func ToStringSlice ¶
func ToStringSlice(i interface{}) []string
func ToStringSliceE ¶
ToStringSliceE casts an empty interface to a []string.
Types ¶
This section is empty.