vendor/github.com/spf13/cast/README.md
changeset 242 2a9ec03fe5a1
child 260 445e01aede7e
equal deleted inserted replaced
241:e77dad242f4c 242:2a9ec03fe5a1
       
     1 cast
       
     2 ====
       
     3 [![GoDoc](https://godoc.org/github.com/spf13/cast?status.svg)](https://godoc.org/github.com/spf13/cast)
       
     4 [![Build Status](https://api.travis-ci.org/spf13/cast.svg?branch=master)](https://travis-ci.org/spf13/cast)
       
     5 [![Go Report Card](https://goreportcard.com/badge/github.com/spf13/cast)](https://goreportcard.com/report/github.com/spf13/cast)
       
     6 
       
     7 Easy and safe casting from one type to another in Go
       
     8 
       
     9 Don’t Panic! ... Cast
       
    10 
       
    11 ## What is Cast?
       
    12 
       
    13 Cast is a library to convert between different go types in a consistent and easy way.
       
    14 
       
    15 Cast provides simple functions to easily convert a number to a string, an
       
    16 interface into a bool, etc. Cast does this intelligently when an obvious
       
    17 conversion is possible. It doesn’t make any attempts to guess what you meant,
       
    18 for example you can only convert a string to an int when it is a string
       
    19 representation of an int such as “8”. Cast was developed for use in
       
    20 [Hugo](http://hugo.spf13.com), a website engine which uses YAML, TOML or JSON
       
    21 for meta data.
       
    22 
       
    23 ## Why use Cast?
       
    24 
       
    25 When working with dynamic data in Go you often need to cast or convert the data
       
    26 from one type into another. Cast goes beyond just using type assertion (though
       
    27 it uses that when possible) to provide a very straightforward and convenient
       
    28 library.
       
    29 
       
    30 If you are working with interfaces to handle things like dynamic content
       
    31 you’ll need an easy way to convert an interface into a given type. This
       
    32 is the library for you.
       
    33 
       
    34 If you are taking in data from YAML, TOML or JSON or other formats which lack
       
    35 full types, then Cast is the library for you.
       
    36 
       
    37 ## Usage
       
    38 
       
    39 Cast provides a handful of To_____ methods. These methods will always return
       
    40 the desired type. **If input is provided that will not convert to that type, the
       
    41 0 or nil value for that type will be returned**.
       
    42 
       
    43 Cast also provides identical methods To_____E. These return the same result as
       
    44 the To_____ methods, plus an additional error which tells you if it successfully
       
    45 converted. Using these methods you can tell the difference between when the
       
    46 input matched the zero value or when the conversion failed and the zero value
       
    47 was returned.
       
    48 
       
    49 The following examples are merely a sample of what is available. Please review
       
    50 the code for a complete set.
       
    51 
       
    52 ### Example ‘ToString’:
       
    53 
       
    54     cast.ToString("mayonegg")         // "mayonegg"
       
    55     cast.ToString(8)                  // "8"
       
    56     cast.ToString(8.31)               // "8.31"
       
    57     cast.ToString([]byte("one time")) // "one time"
       
    58     cast.ToString(nil)                // ""
       
    59 
       
    60 	var foo interface{} = "one more time"
       
    61     cast.ToString(foo)                // "one more time"
       
    62 
       
    63 
       
    64 ### Example ‘ToInt’:
       
    65 
       
    66     cast.ToInt(8)                  // 8
       
    67     cast.ToInt(8.31)               // 8
       
    68     cast.ToInt("8")                // 8
       
    69     cast.ToInt(true)               // 1
       
    70     cast.ToInt(false)              // 0
       
    71 
       
    72 	var eight interface{} = 8
       
    73     cast.ToInt(eight)              // 8
       
    74     cast.ToInt(nil)                // 0
       
    75