不积跬步,无以至千里;不积小流,无以成江海。
码字不易,点赞再看。
Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外浮点数转16进制,还有数组、切片、结构体、函数、map、通道(channel)等。Go 语言的基本类型和其他语言大同小异。
整型
整型分为以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、uint16、uint32、uint64
其中,uint8 就是我们熟知的 byte 型(后续会介绍到),int16对应C语言中的short型,int64对应C语言中的long型。
特殊整型
注意:int 和 uint 的区别就在于一个 u,有 u 说明是 无符号,没有 u 代表 有符号。
注意事项: 由于 int和 uint 是根据操作系统变化的,所以在某些场景下,你应当避免使用 int 和 uint ,而使用更加精确的 int32 和 int64,比如在二进制传输、读写文件的结构描述(为了保持文件的结构不会受到不同编译目标平台字节长度的影响)
数字字面量语法(Number literals syntax)
出于习惯,在初始化数据类型为整形的变量时,我们会使用10进制的表示法,因为它最直观,比如这样,表示整数10.比如:
var num = 10
Go1.13版本之后引入了数字字面量语法浮点数转16进制,这样便于开发者以二进制、八进制或十六进制浮点数的格式定义数字,例如:
v := 0b00101101, 代表二进制的 101101,相当于十进制的 45。
v := 0o377,代表八进制的 377,相当于十进制的 255。
v := 0x1p-2,代表十六进制的 1 除以 2²,也就是 0.25。
而且还允许我们用 _ 来分隔数字,比如说:v := 123_456 等于 123456。
我们可以借助fmt函数来将一个整数以不同进制形式展示。
浮点型
浮点数类型的值一般由 整数部分、小数点“.” 和 小数部分 组成。
其中,整数部分和小数部分均由10进制表示法表示。不过还有另一种表示方法。那就是在其中加入 指数部分。指数部分由“E”或“e”以及一个带 正负号 的10进制数组成。比如,3.7E-2表示浮点数0.037。又比如,3.7E+1表示浮点数37。
有时候,浮点数类型值的表示也可以被简化。比如,37.0可以被简化为37。又比如,0.037可以被简化为.037。
有一点需要注意,在Go语言里,浮点数的相关部分只能由10进制表示法表示,而不能由8进制表示法或16进制表示法表示。比如,03.7表示的一定是浮点数3.7。
float32 和 float64
Go语言支持两种浮点型数:float32 和 float64。
这两种浮点型数据格式遵循 IEEE 754标准: float32 的浮点数的最大范围约为 3.4e38,可以使用常量定义:math.MaxFloat32。
float64 的浮点数的最大范围约为 1.8e308,可以使用一个常量定义:math.MaxFloat64。
float32 也即我们常说的单精度,存储占用4个字节,也即4*8=32位,其中1位用来符号,8位用来指数,剩下的23位表示尾数
float64,也即我们熟悉的双精度,存储占用8个字节,也即8*8=64位,其中1位用来符号,11位用来指数,剩下的52位表示尾数
数值很大但精度有限
人家虽然能表示的数值很大,但精度位却没有那么大。
float32的精度只能提供大约6个十进制数(表示后科学计数法后,小数点后6位)的精度
float64的精度能提供大约15个十进制数(表示后科学计数法后,小数点后15位)的精度
超过精度的话 会造成精度丢失,比如:
返回 True
点关注 不迷路
如果你从本篇内容有收获,求 点赞,求 关注,求 转发 ,让更多的人学习到。
如果本文有任何错误,请批评指教,不胜感激
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: muyang-0410