ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

8.30Go之数据类型转换

2021-08-30 19:35:10  阅读:127  来源: 互联网

标签:类型转换 int32 fmt 类型 num 8.30 Go


8.30Go之数据类型转换

Go语言当中的类型转换

特点:

Go语言不存在隐式类型转换,所有的类型转换都必须显式的声明:

valueOfTypeB = typeB(valueOfTypeA)
/*
类型 B 的值 = 类型 B(类型 A 的值)
*/

Go语言当中数据类型转换的一些特性

  • 只能在定义正确的情况下转换成功。例如:从一个取值范围较小的类型转换到一个取值范围较大的类型

    • 从一个取值范围较大的类型转换到取值范围较小的类型时(将 int32 转换为 int16 或将 float32 转换为 int),会发生精度丢失(截断)的情况。--->不会失败,会丢失精度

  • 有相同底层类型的变量之间可以进行相互转换(如将 int16 类型转换成 int32 类型),不同底层类型的变量相互转换时会引发编译错误(如将 bool 类型转换为 int 类型)

底层类型相同指的是值类型,值类型可以向引用类型转型。例如:将一串int转成string类型

示例:

package main

import (
"fmt"
"math"
)

func main() {
/*打印数据类型的最大最小值*/
fmt.Println("int8 range is:", math.MinInt8, math.MaxInt8)

/*声明一个int32整数型*/
var num int32 = 1047483647
//格式化输出变量的16进制形式和10进制形式
fmt.Printf("int32: 0x%x %d\n", num, num)

/*数值转型为int16*/
num2 := int16(num)
fmt.Printf("int16: 0x%x %d\n", num2, num2)
/*
上下两次打印的结果上看发生了精度丢失
*/

/*声明一个float变量*/
var num3 float32 = math.Pi //圆周率
fmt.Println(int(num3)) //精度丢失,小数点后的数全部丢失
   /*
   浮点数在转换为整型时,会将小数部分去掉,只保留整数部分。
   */
}

fmt.Printf%x动词将数值以十六进制格式输出,输出 num 在转换前的 32 位的值。

 

标签:类型转换,int32,fmt,类型,num,8.30,Go
来源: https://www.cnblogs.com/JunkingBoy/p/15207409.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有