当前位置: 首页 > news >正文

6、做中学 | 三年级下期 Golang值类型相互转换

本次为操作文章,大部分都在讨论类型之间如何转换,使用的是内置方法进行调用执行,详细使用请移步至:
go的API使用文档地址
https://studygolang.com/pkgdoc

一、数值类型相互转换

go中数值转换需要显示转换,不能隐式自动转换,使用T(v)表达式进行转换,T是要声明转换的类型,v是要转换值。

练习代码如下:

	// 类型转换// 类型显示转换var num int32 = 10// int32 转int64var num2 int64 = int64(num)fmt.Println("num2 = ", num2)fmt.Printf("num2 type is %T\n ", num2)//num2 =  10//num2 type is int64// int32 转 float32var num3 float32 = float32(num)fmt.Println("num3 = ", num3)fmt.Printf("num3 type is %T\n ", num3)//num3 =  10//num3 type is float32// int32 转 float64var num4 float64 = float64(num)fmt.Println("num4 = ", num4)fmt.Printf("num4 type is %T\n ", num4)//num4 =  10//num4 type is float64fmt.Printf("num type is %T\n ", num)//  num type is int32

练习注意事项

  1. 类型转换可以从小到大,也可以从大到小
  2. 转换过程中,需要显示声明要转换的类型
  3. 被转换的v值,其本身类型不发生变化(上述num变量)
  4. 大类型转换为小类型时,精度可能损失
	// int8 内存储范围 -128 ~ 127n3 = int8(n1) + 127// 编译通过,但是值会按溢出处理fmt.Println("n3 = ", n3)// n3 =  -117// 编译不过//n3 = int8(n1) + 128 // Invalid operation: int8(n1) + 128 (cannot convert the constant 128 to the type int8)

二、数值转换字符串

数值转换为字符串有俩种方法:

  1. 使用fmt.Sprintf方法
  2. 使用strconv工具包

练习代码如下

	// 数值转字符串// 1. 使用fmt.Sprintf()var m1 int = 100str1 := fmt.Sprintf("%d", m1)fmt.Printf("str1 type:%T, str1 value: %q\n", str1, str1)// str1 type:string, str1 value: "100"// 2. 使用 strconv// 1. 需要转换int64类型  2. base为10 表示格式化为10进制str2 := strconv.FormatInt(int64(m1), 10)fmt.Printf("str2 type:%T, str2 value: %q\n", str2, str2)// str2 type:string, str2 value: "100"var f float32 = 3.1415926// 1. 需要转换float64类型   2. 'f' 表示式化成-ddd.dddd  3. 2 表示小数点后保留2位  4. 32 表示格式化为32位str3 := strconv.FormatFloat(float64(f), 'f', 2, 32)fmt.Printf("str3 type:%T, str3 value: %q\n", str3, str3)// str3 type:string, str3 value: "3.14"

具体使用细节,请移步官方API文档:https://studygolang.com/pkgdoc
对应的方法详情如下
在这里插入图片描述

三、数值转字符串

使用strconv进行数值,转换为字符串操作
练习代码

	// 字符串转数值// strconv包进行转换var str4 string = "123"// base为要转换的进制,bitSize为要求的int大小str4Num, _ := strconv.ParseInt(str4, 10, 64)fmt.Printf("str4Num type:%T, str4Num value: %v\n", str4Num, str4Num)// str4Num type:int64, str4Num value: 123var str5 string = "3.14"str5Num, _ := strconv.ParseFloat(str5, 64)fmt.Printf("str5Num type:%T, str5Num value: %v\n", str5Num, str5Num)// str5Num type:float64, str5Num value: 3.14var str6 string = "true"str6Num, _ := strconv.ParseBool(str6)fmt.Printf("str6Num type:%T, str6Num value: %v\n", str6Num, str6Num)// str6Num type:bool, str6Num value: true

在这里插入图片描述

  1. 熟练进行值类型相互转换
  2. 熟练进行值类型与字符串转换
  3. 熟练进行字符串与值类型转换

相关文章:

  • 免费网站最新域名推广信息哪个平台好
  • 公司变更说明灰色行业seo
  • 生活中花钱请人做网站企业网站首页
  • 青岛网站搭建公司免费网站流量
  • 营销网站建设网站制作公司网络营销软文
  • 保定网站建设制作服务百度知道在线问答
  • 好用的图标库和字体库
  • 《中国电信运营商骨干网:历史、现状与未来演进》系列 第五篇:新玩家入局——中国广电CBNNET如何构建全国一张网?
  • 在pypi中,yank某个包是什么意思
  • docker start mysql失败,解决方案
  • Python DuckDB 详解:轻量级分析型数据库的革新实践
  • React ref 和 JS 对象的区别
  • nohup选项对jenkins web连接稳定行影响分析总结
  • 【CUDA调优指南】缓存访存流程
  • 鸿蒙容器组件 ColumnSplit 与 RowSplit解析:动态分割布局指南
  • Three.js项目实战:从零搭建小米SU7三维汽车
  • 服务器性能优化通用方案
  • .NET 依赖注入(DI)全面解析
  • Ubuntu下交叉编译工业相机库aravis到OpenHarmony(aarch64)使用
  • GaussDB实例级自动备份策略:构建数据安全的“自动防护网”
  • 终止分区表变更操作时误删数据字典缓存导致MySQL崩溃分析
  • 卡萨帝发布AI深度科技:实现从守护生活到守护文明的升级
  • 人生笔记Real:记录生活点滴,守护珍贵记忆
  • MiniMax-M1混合MoE大语言模型(本地运行和私有化搭建)
  • 微服务思想与C++服务化框架
  • Hadoop之HDFS