Go 学习笔记之 数据类型
Go 语言的数值类型包括几种不同大小的整数、浮点数和复数。每种数值类型都决定了对应的大小范围和是否支持正负符号。
我们先从整数类型开始介绍。
整型
Go 语言同时提供了有符号和无符号类型的整数运算。这里有 int8、int16、int32 和 int64 四种截然不同大小的有符号整数类型,分别对应 8、16、32、64bit 大小的有符号整数,与此对应的是 uint8、uint16、uint32 和 uint64 四种无符号整数类型。
不管它们的具体大小,int、uint 和 uintptr 是不同类型的兄弟类型。其中 int 和 int32 也是不同的类型,即使 int 的大小也是 32bit,在需要将 int 当作 int32 类型的地方需要一个显式的类型转换操作,反之亦然。
其中有符号整数采用 2 的补码形式表示,也就是最高 bit 位用来表示符号位,一个 n-bit 的有符号数的值域是从 $-2^{n-1}$到 $2^{n-1}-1$。无符号整数的所有 bit 位都用于表示非负数,值域是 0 到 $2^n-1$。
例如,int8 类型整数的值域是从-128 到 127,而 uint8 类型整数的值域是从 0 到 255。
二元运算符
下面是 Go 语言中关于算术运算、逻辑运算和比较运算的二元运算符,它们按照优先级递减的顺序排列:
二元运算符有五种优先级。
在同一个优先级,使用左优先结合规则,但是使用括号可以明确优先顺序,使用括号也可以用于提升优先级,例如mask & (1 << 28)
。
一个算术运算的结果,不管是有符号或者是无符号的,如果需要更多的 bit 位才能正确表示的话,就说明计算结果是溢出了。超出的高位的 bit 位部分将被丢弃。如果原始的数值是有符号类型,而且最左边的 bit 位是 1 的话,那么最终结果可能是负的,例如 int8 的例子:
大小比较
两个相同的整数类型可以使用下面的二元比较运算符进行比较;比较表达式的结果是布尔类型。
字符打印
字符使用%c
参数打印,或者是用%q
参数打印带单引号的字符:
作者:架构精进之路,十年研发风雨路,大厂架构师,CSDN 博客专家,专注架构技术沉淀学习及分享,职业与认知升级,坚持分享接地气儿的干货文章,期待与你一起成长
关注并私信我回复“01”,送你一份程序员成长进阶大礼包,欢迎勾搭。
Thanks for reading!
版权声明: 本文为 InfoQ 作者【架构精进之路】的原创文章。
原文链接:【http://xie.infoq.cn/article/30315a4cfce53278e5e1886f6】。文章转载请联系作者。
评论