在本文中,我们将介绍go的基础数据类型。
虽然从底层而言,所有的数据都是由比特组成,但计算机一般操作的是固定大小的数,如整
数、浮点数、比特数组、内存地址等。进一步将这些数组织在一起,就可表达更多的对象,
例如数据包、像素点、诗歌,甚至其他任何对象。Go语言提供了丰富的数据组织形式,这依
赖于Go语言内置的数据类型。这些内置的数据类型,兼顾了硬件的特性和表达复杂数据结构
的便捷性。
Go语言将数据类型分为四类:基础类型、复合类型、引用类型和接口类型。
本文将介绍基础类型,包括:数字、字符串和布尔型;
整型
有符号类型: int8、int16、int32和int64
无符号类型: uint8、uint16、uint32和uint64
无符号的整数类型uintptr
对应特定CPU平台机器字大小的有符号和无符号整数int和uint;这两种类型都有同样的大小,32或64bit;
其中有符号整数采用2的补码形式表示,也就是最高bit位用作表示符号位
+运算符还有一个与赋值相结合的对应运算符+=,可以用于简化赋值语句。
%取模运算符
二元比较运算符,比较表达式的结果是布尔类型:
== equal to
!= not equal to
< less than
<= less than or equal to
greater than
= greater than or equal to
对于整数,+x是0+x的简写,-x则是0-x的简写;对于浮点数和复数,+x就是x,-x则是x 的负数。
bit位操作运算符:
& 位运算 AND
| 位运算 OR
^ 位运算 XOR
&^ 位清空 (AND NOT)
<< 左移
右移
一般来说,需要一个显式的转换将一个值从一种类型转化位另一种类型,并且算术和逻辑运
算的二元操作中必须是相同的类型。
否则,需要显式转换成显式转型为一个常见类型,比如:
var compote = int(apples) + int(oranges)
对于每种类型T,如果转换允许的话,类型转换操作T(x)将x转换为T类型。许多
整形数之间的相互转换并不会改变数值;它们只是告诉编译器如何解释这个值。但是对于将
一个大尺寸的整数类型转为一个小尺寸的整数类型,或者是将一个浮点数转为整数,可能会
改变数值或丢失精度。
浮点数到整数的转换将丢失任何小数部分,然后向数轴零方向截断。