cast/README.md

90 lines
3.4 KiB
Markdown
Raw Normal View History

# cast
2023-12-23 06:58:01 +03:00
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/PeterlitsZo/cast/ci.yaml?branch=master&style=flat-square)](https://github.com/PeterlitsZo/cast/actions/workflows/ci.yaml)
[![PkgGoDev](https://pkg.go.dev/badge/mod/github.com/PeterlitsZo/cast)](https://pkg.go.dev/mod/github.com/PeterlitsZo/cast)
![Go Version](https://img.shields.io/badge/go%20version-%3E=1.16-61CFDD.svg?style=flat-square)
2023-12-23 06:58:01 +03:00
[![Go Report Card](https://goreportcard.com/badge/github.com/PeterlitsZo/cast?style=flat-square)](https://goreportcard.com/report/github.com/PeterlitsZo/cast)
2014-04-03 22:21:16 +04:00
Easy and safe casting from one type to another in Go
Dont Panic! ... Cast
2023-12-23 06:58:01 +03:00
> This project is forked from `spf13/cast`, See section **What's New** to know more.
## 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 doesnt 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](https://gohugo.io), 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
youll 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
2023-12-23 06:58:01 +03:00
### What's new
- `v0.1.0`:
- The original version forked from `spf13/cast`.
- `v0.1.1`:
- Support string-alias type's `ToStringE` and `ToString` function.
```go
type StrAlias string
ToString(StrAlias("foobar")) // "foobar"
```