Golang中的类型转换介绍

这篇具有很好参考价值的文章主要介绍了Golang中的类型转换介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Golang中存在4种类型转换,分别是:断言、显式、隐式、强制。下面我将一一介绍每种转换使用场景和方法

一、断言类型转换

主要是判断变量是否可以转换成某一类型。断言主要用于变量是interface{}类型(接口类型)的情况,且变量值必须与要转换类型一致。可以细分为2种使用方式

  • 普通断言
  • switch断言

1.1 普通断言示例

// 定义一个接口类型变量
var userInfo interface{}
// 定义一个map类型变量
userInfoNew := map[string]int{
	"phoneNum": 123456,
	"age":      18,
}
// 由于interface{}可以接收任何类型变量,因此可以将map类型变量赋值给它
userInfo = userInfoNew
// 此时userInfo变量类型仍为interface{},但变量值是map类型,若想获取变量值需采用断言进行类型转换
res, _ := userInfo.(map[string]int)
fmt.Println("age:", res["age"])

输出结果:

age: 18

1.2 switch断言示例

var userInfo interface{} = "user info"
switch val := userInfo.(type) {
case float32:
	fmt.Printf("userInfo变量的类型为%T userInfo变量的值为%v\n", val, val)
case float64:
	fmt.Printf("userInfo变量的类型为%T userInfo变量的值为%v\n", val, val)
case int:
	fmt.Printf("userInfo变量的类型为%T userInfo变量的值为%v\n", val, val)
case bool:
	fmt.Printf("userInfo变量的类型为%T userInfo变量的值为%v\n", val, val)
case string:
	fmt.Printf("userInfo变量的类型为%T userInfo变量的值为%v\n", val, val)
default:
	fmt.Println("非已知类型")
}

输出结果:

userInfo变量的类型为string userInfo变量的值为user info

二、显示类型转换

细分为2种:

  • 表达式格式为:T(x),T为变量x要转换的最终类型。适用整型与浮点型互转,字节数组与字符串类型互转,结构体类型转换接口类型(反之不行)
  • 使用strconv包提供的方法
    1)strconv.Atoi():将字符串类型转成整数
    2)strconv.Itoa():将整数转成字符串类型

三、隐式类型转换

通常是程序内部自动转换,对开发人员无感知

四、强制类型转换

这个暂时未研究文章来源地址https://www.toymoban.com/news/detail-730167.html

到了这里,关于Golang中的类型转换介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • golang 类型转换interface转字符串string

    方式一和方式二适用于interface和各种转换 方式三如果需要将一个普通的类型转换成字符串,可以使用 strconv 包中的相关函数。例如,将一个整数转换成字符串:

    2024年02月12日
    浏览(47)
  • 详细介绍golang中.()类型断言的使用方法

    Golang是一门非常流行的编程语言,在很多领域都有着广泛的应用。在开发过程中,很多时候我们需要将函数作为参数传递给其他函数,这时候就需要用到golang中的.()用法。本文将详细介绍golang中.()的使用方法。 在golang中,.()被称为类型断言,可以将一个interface{}类型的变量转

    2024年02月14日
    浏览(54)
  • Golang 中的反射,并用来获取数据类型

    Go语言提供了一种机制在运行中获取某个变量的类型,获取或修改变量的值,调用变量的方法。 示例代码如下 通过 reflect.Value 判断变量类型,并转换成 string 。 输出结果: 输出结果:

    2024年01月22日
    浏览(53)
  • Golang 中的 archive/zip 包详解(二):常用类型

    Golang 中的 archive/zip 包用于处理 ZIP 格式的压缩文件,提供了一系列用于创建、读取和解压缩 ZIP 格式文件的函数和类型,使用起来非常方便。 定义如下: 表示一个 ZIP 文件中的单个文件的信息,文件的元数据信息,例如文件名、文件大小、修改时间等包含在 FileHeader 中,有

    2024年02月11日
    浏览(40)
  • 标准库unsafe:带你突破golang中的类型限制

    本文分享自华为云社区《突破语言golang中的类型限制》,作者:码乐。 在使用c语言编程时,常常因为类型的问题大伤脑筋,而其他语言比如java,python默认类型又是难以改变的,golang提供了一些方式用于喜欢hack的用户。 官方说明标准库 unsafe 包含绕过 Go 程序的类型安全的操

    2024年04月08日
    浏览(43)
  • 100天精通Golang(基础入门篇)——第5天: Go语言中的数据类型学习

    🌷 博主 libin9iOak带您 Go to Golang Language.✨ 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批

    2024年02月08日
    浏览(47)
  • golang学习-golang结构体和Json相互转换

    1、结构体转为json对象     v, _ := json.Marshal(student)     jsonStr := string(v) // 结构体转为json对象 2、json字符串转为结构体     var s1 Student     err := json.Unmarshal([]byte(str), s1) //json 字符串转为结构体    3、结构体标签 表示的是转换为json对象时,ID字段变为id,Name字段变为name. type

    2024年01月23日
    浏览(54)
  • Golang自定义类型与类型别名

    type myInt int32 与 type myInt = int32 ,概念并不相同 自定义类型: type myInt int32 通过这种方式定义的类型是一个 全新的类型 ,这个新类型与 int32 有相同的底层结构,但是却与 int32 类型不兼容。 尽管 myInt 的底层类型是 int32 ,但它们在类型系统中是不同的。 类型别名: type myInt

    2024年02月13日
    浏览(42)
  • 【golang】每日chatGPT:golang中实现ENUM枚举类型 | go enum

    在golang极简的哲学思想中,没有内置枚举类型 这里我们通过map+iota去实现一个枚举类型 枚举值如下: key value 1 发电类 2 储能类 13 负荷类 打印如下: 发电类 储能类 负荷类 ========= 储能类

    2024年02月15日
    浏览(46)
  • 编程笔记 Golang基础 016 数据类型:数字类型

    在Go语言中,数字类型是其丰富数据类型的一部分,主要用于表示数值。 以下是Go语言中主要的数字类型详解: 1. 整数类型(Integer Types) a) 固定长度整数: 有符号整数 : int8 :8位带符号整数,范围从-128到127。 int16 :16位带符号整数,范围从-32,768到32,767。 int32 :32位带符号

    2024年02月22日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包