...

Text file src/github.com/spf13/cast/README.md

Documentation: github.com/spf13/cast

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

View as plain text