| cast |
| ==== |
| |
| Easy and safe casting from one type to another in Go |
| |
| Don’t Panic! ... Cast |
| |
| ## 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](http://hugo.spf13.com), 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 |
| |