golang类型转换组件Cast的使用详解

 更新时间:2021年02月26日 09:53:12   作者:三十三重天  
这篇文章主要介绍了golang类型转换组件Cast的使用详解,帮助大家更好的理解和学习使用golang,感兴趣的朋友可以了解下

开源地址

https://github.com/spf13/cast

Cast是什么?

Cast是一个库,以一致和简单的方式在不同的go类型之间转换。

Cast提供了简单的函数,可以轻松地将数字转换为字符串,将接口转换为bool类型等等。当一个明显的转换是可能的时,Cast会智能地执行这一操作。它不会试图猜测你的意思,例如,你只能将一个字符串转换为int的字符串表示形式,例如“8”。Cast是为Hugo开发的,Hugo是一个使用YAML、TOML或JSON作为元数据的网站引擎。

为什么使用Cast?

在Go中处理动态数据时,通常需要将数据从一种类型转换为另一种类型。强制转换不仅仅是使用类型断言(尽管它在可能的情况下使用类型断言),它提供了一个非常直接和方便的库。

如果您正在使用接口来处理诸如动态内容之类的事情,那么您将需要一种简单的方法来将接口转换为给定类型。这是给你的图书馆。

如果您从YAML、TOML或JSON或其他缺乏完整类型的格式中获取数据,那么Cast就是适合您的库。

使用方式

强制转换提供了一些To_____ 的方法。这些方法将始终返回所需的类型。如果提供的输入不能转换为该类型,则返回该类型的0或nil值。

Cast也提供了 To_____E相同的方法。这些方法返回与To_____方法相同的结果,外加一个额外的错误,告诉您是否成功转换。使用这些方法,您可以分辨输入匹配零值时的不同,以及转换失败时返回零值时的不同。

案例

下面的例子仅仅是现有例子的一个例子。请查看完整的代码集。

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

main函数

package main

import (
	"fmt"
	"reflect"

	"github.com/spf13/cast"
)

func main() {
	var foo interface{} = "one more time"
	box := cast.ToString(foo)
	fmt.Println(box)
	box = cast.ToString("3.12021")
	fmt.Println(box)

	cvIntBox := cast.ToInt(8)
	fmt.Println(cvIntBox, reflect.TypeOf(cvIntBox))
	cvFloatBox := cast.ToFloat32(8.31)
	fmt.Println(cvFloatBox, reflect.TypeOf(cvFloatBox))
	cvBoolBox := cast.ToBool(true)
	fmt.Println(cvBoolBox, reflect.TypeOf(cvBoolBox))
}

输出

one more time
3.12021
8 int
8.31 float32
true bool

以上就是golang类型转换组件Cast的使用详解的详细内容,更多关于golang类型转换组件Cast的资料请关注脚本之家其它相关文章!

相关文章

  • GoLang context包的使用方法介绍

    GoLang context包的使用方法介绍

    日常Go开发中,Context包是用的最多的一个了,几乎所有函数的第一个参数都是ctx,那么我们为什么要传递Context呢,Context又有哪些用法,底层实现是如何呢?相信你也一定会有探索的欲望,那么就跟着本篇文章,一起来学习吧
    2023-03-03
  • 关于Go 空结构体的 3 种使用场景

    关于Go 空结构体的 3 种使用场景

    在今天这篇文章要给大家介绍得是Go 语言中几种常见类型的宽度,并且基于开头的问题 ”空结构体“ 进行了剖析,需要的朋友可以参考一下,希望对你有所帮助
    2021-10-10
  • Go语言实现一个简单生产者消费者模型

    Go语言实现一个简单生产者消费者模型

    本文主要介绍了Go语言实现一个简单生产者消费者模型,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Go语言处理Excel文件的教程详解

    Go语言处理Excel文件的教程详解

    在Go语言中,有许多库和工具可用于处理Excel文件,本文将介绍如何使用Go语言处理Excel文件,包括读取、写入和修改Excel文件,需要的小伙伴可以了解下
    2024-01-01
  • 一文详解go的defer和return的执行顺序

    一文详解go的defer和return的执行顺序

    go的defer和return是golang中的两个关键字,return用于返回函数的返回值,也可以参与一定的流程控制,defer是golang中的延迟调用,经常用于文件流的关闭,锁的解锁操作,本文给大家介绍了go的defer和return的执行顺序,需要的朋友可以参考下
    2024-07-07
  • Go prometheus metrics条目自动回收与清理方法

    Go prometheus metrics条目自动回收与清理方法

    这篇文章主要为大家介绍了Go prometheus metrics条目自动回收与清理方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • go语言使用jwt认证的实现

    go语言使用jwt认证的实现

    本文主要介绍了go语言使用jwt认证的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Golang Http请求返回结果处理

    Golang Http请求返回结果处理

    本文主要介绍了Golang Http请求返回结果处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Go语言学习教程之结构体的示例详解

    Go语言学习教程之结构体的示例详解

    结构体是一个序列,包含一些被命名的元素,这些被命名的元素称为字段(field),每个字段有一个名字和一个类型。本文通过一些示例带大家深入了解Go语言中结构体的使用,需要的可以参考一下
    2022-09-09
  • Go语言中Gin框架使用JWT实现登录认证的方案

    Go语言中Gin框架使用JWT实现登录认证的方案

    在如今前后端分离开发的大环境中,我们需要解决一些登陆,后期身份认证以及鉴权相关的事情,通常的方案就是采用请求头携带token的方式进行实现,本文给大家介绍了Go语言中Gin框架使用JWT实现登录认证的方案,需要的朋友可以参考下
    2024-11-11

最新评论