Cast是一个库,以一致和简单的方式在不同的Go类型之间转换。
Cast提供了简单的函数,可以轻松地将数字转换为字符串,将接口转换为bool类型等等。当一个明显的转换是可能的时,Cast会智能地执行这一操作。它不会试图猜测你的意思,例如,你只能将一个字符串转换为int的字符串表示形式,例如“8”。Cast是为Hugo开发的,Hugo是一个使用YAML、TOML或JSON作为元数据的网站引擎。
在Go中处理动态数据时,通常需要将数据从一种类型转换为另一种类型。强制转换不仅仅是使用类型断言(尽管它在可能的情况下使用类型断言),它提供了一个非常直接和方便的库。
如果您正在使用接口来处理诸如动态内容之类的事情,那么您将需要一种简单的方法来将接口转换为给定类型。
如果您从YAML、TOML或JSON或其他缺乏完整类型的格式中获取数据,那么Cast就是适合您的库。
强制转换提供了一些To_ 的方法。这些方法将始终返回所需的类型。如果提供的输入不能转换为该类型,则返回该类型的0或nil值。
Cast也提供了 To_E相同的方法。这些方法返回与To_方法相同的结果,外加一个额外的错误,告诉您是否成功转换。使用这些方法,您可以分辨输入匹配零值时的不同,以及转换失败时返回零值时的不同。
下面的例子仅仅是现有例子的一个例子。请查看完整的代码集。
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"
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
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
一、导入库: go get github.com/demdxx/gocast 二、测试代码: // main.go package main import ( "fmt" "reflect" "github.com/demdxx/gocast" ) type AccessRegion struct { region_id int64
Golang类型转换工具库cast 简介 cast可以在 Go 中轻松安全地从一种类型转换为另一种类型,cast 提供了简单的函数来轻松地将数字转换为字符串,将接口转换为布尔值等。当需要显示类型转换时,cast 会智能地执行转换操作。 快速入门 安装 go get github.com/spf13/cast 使用 package main import ( "fmt" "github.c
下载安装cast go get github.com/spf13/cast cast简介 cast可以在 Go 中轻松安全地从一种类型转换为另一种类型,Cast 提供了简单的函数来轻松地将数字转换为字符串,将接口转换为布尔值等。当需要显示类型转换时,Cast 会智能地执行转换操作。 cast用法 cast通过了两组方法ToXXX和ToXXXE: ToXXX:这些方法将始终返回所需的类型。如果提供
强类型语言有它的优势,但也有不便利的地方,最典型的就是类型转换。Golang 作为一门强类型语言,而且不支持隐式类型转换,因此这个问题更突出。虽然 Go 提供了不少方式进行类型转换,包括相关的标准库,比如 strconv 包。 然而,strconv 包使用没那么方便,比如 "8" 转为 int 类型: s := "8" i, err := strconv.Atoi(s) 你必须对 err 进行处
C++中的四种操作符形式类型转换 1、static_cast (静态类型转换) 主要使用场景:适用于将void*转换为其他的指针 int a = 100; void* pv = &a; //int *pi = pv; //不能隐式转换,只能显示转换 int *pi = static_case<int *>(pv); *pi = 50; cout << a << endl; // 可以看到输出结
文章转载自:http://www.jellythink.com/archives/205 前言 这篇文章总结的是C++中的类型转换,这些小的知识点,有的时候,自己不是很注意,但是在实际开发中确实经常使用的。俗话说的好,不懂自己写的代码的程序员,不是好的程序员;如果一个程序员对于自己写的代码都不懂,只是知道一昧的的去使用,终有一天,你会迷失你自己的。 C++中的类型转换分为两种: 隐式类型转换; 显
作者:三十三重天 博客: http://www.zhouhuibo.club 沉淀、分享、成长,让自己和他人都能有所收获! Cast介绍 Cast是什么? Cast是一个库,以一致和简单的方式在不同的go类型之间转换。 Cast提供了简单的函数,可以轻松地将数字转换为字符串,将接口转换为bool类型等等。当一个明显的转换是可能的时,Cast会智能地执行这一操作。它不会试图猜测你的意思,例如,你只
C++基类和派生类的智能指针转换:static_pointer_cast、dynamic_pointer_cast、const_pointer_cast、reinterpret_pointer_cast 当我们用“裸”指针进行类层次上的上下行转换时,可以使用dynamic_cast。当然我们也可以使用static_cast,只是dynamic_cast在进行下行转换的时候(即基类到派生类)具有类型
Go作为强类型语言,无法像Python之类的语言直接使用str等内置函数完成类型转换,所以有人开发了一个非常方便的转换工具cast GitHub-cast 下面是作者给出的演示 cast.ToString("mayonegg") // "mayonegg" cast.ToString(8) // "8" cast.ToString(8.31)
safe and easy casting from one type to another in Go 译文:安全且容易从一种类型转换到另一种类型 文档 https://pkg.go.dev/github.com/spf13/cast https://github.com/spf13/cast 安装 go get github.com/spf13/cast 示例 package main i
Rust 在基本类型之间没有提供隐式类型转换(强制类型转换)(implicit type conversion,coercion )。不过使用 as 关键字进行显式类型转换(explict type conversion,casting)。 一般来说,Rust 的整型类型的转换规则遵循 C 语言的惯例,除了那些在 C 语言是未定义行为的情况。在 Rust 中,所有的整型类型转换的行为都得到了很好的
类型转换可以判断实例的类型,也可以将该实例在其所在的类层次中视为其父类或子类的实例。 Swift 中类型转换的实现为 is 和 as 操作符。这两个操作符使用了一种简单传神的方式来检查一个值的类型或将某个值转换为另一种类型。 如同协议实现的检查(此处应有链接)中描述的那样,你还可以使用类型转换来检查类型是否遵循某个协议。 为类型转换定义类层次 你可以在类及其子类层次中使用类型转换来判断特定类实例的
String可以与整型和浮点型互相转换。 整形 String转Int String s("1234"); long value = s.toInt(); Int转String String s(1234); 浮点型 String转Float String s("1234.56"); double value = s.toFloat(); Float转String String s(1234.
Variant对象提供的toXXX系列函数可以将标量(Scalar)变量转换为其他类型。Zend字符串、数组、对象可直接使用构造方法进行转换,但必须保证传入的Variant对象必须为该类型,否则底层会抛出致命错误。 转为整型 long value = var.toInt(); 转为浮点型 double value = var.toFloat(); 转为布尔型 bool value = var.
本页包含内容: 定义一个类层次作为例子 检查类型 向下转型(Downcasting) Any和AnyObject的类型转换 类型转换可以判断实例的类型,也可以将实例看做是其父类或者子类的实例。 类型转换在 Swift 中使用is 和 as操作符实现。这两个操作符提供了一种简单达意的方式去检查值的类型或者转换它的类型。 你也可以用来检查一个类是否实现了某个协议,就像在 Checking for Pr
大多数情况下,运算符和函数会自动将赋予它们的值转换为正确的类型。 比如,alert 会自动将任何值都转换为字符串以进行显示。算术运算符会将值转换为数字。 在某些情况下,我们需要将值显式地转换为我们期望的类型。对象还未纳入讨论中 在本章中,我们不会讨论 object 类型。目前,我们将只学习原始类型。 之后,在我们学习完 object 类型后,我们会在 对象 — 原始值转换 一章中学习对象 — 原始
JavaScript 是弱类型语言,所以会在任何可能的情况下应用强制类型转换。 // 下面的比较结果是:true new Number(10) == 10; // Number.toString() 返回的字符串被再次转换为数字 10 == '10'; // 字符串被转换为数字 10 == '+10 '; // 同上 10 == '010';
支持给字段设置类型自动转换,会在写入和读取的时候自动进行类型转换处理,例如: <?php class User extends Model { protected $type = [ 'status' => 'integer', 'score' => 'float', 'birthday' => 'datetime',