常见的有,布尔类型,整型,浮点型,字符串

我们重点在于这些类型在Go中和其他语言中的不同之处

首先说,无论何种基本类型,在Go中都是具有零值的,也就是都会被赋予一个默认值。

对于基本类型,bool和其他的函数中一样,默认值是false

对于数值类型,Go中的数值类型可以分为3个大类和12个不同的子类,

三个大类指的是整型,浮点型,复数型

对于整型,则是具有有符号整形和无符号整形

基本上由

int和uint

各自又是由8,16,32,64个比特组成的不同的类型

不过默认值都是0罢了

而且byte本质上就是uint8

对于这些整型的使用,使用的时候需要官方给出了一些建议,

首先是根据使用的类型,选择不同类型的整形

如果是需要一个可以适用于任何整形的库函数,则是推荐编写一对函数,一个函数对应的int64,一个函数对应的uint64,但是由于Go不支持使用泛型,所以需要在函数名称上进行一些区分,比如strconv中的FormatInt和FormatUint,基本上算法和逻辑相同,但是函数类型不同。

初次之外,Go中的整型也是支持常见的算术运算符 +=, -=, *=

对于浮点型,Go支持的浮点型有float32和float64

但是由于计算机本身具有的精准问题,所以浮点数往往只能取到近似值,丢失了部分的精度

所以无法进行 == 进行比较,所以往往两个浮点数看起来相同,但是比较结果却不同,一般的做法是定义一个最小方差,然后比较这两个浮点数的差异是否小于这个最小值。

最后是关于复数型

复数型一般不会直接使用,Go中尺寸支持两种复数型 complex64,complex128

complex64的实数和虚数都是float32的值,128则都是float63组成的

使用起来可以为

x := complex(2.5,3.1)

y := complex(10.2,2)

不过由于内部使用的是float,所以还是不精准的。

除了一些数字,字符串作为变成的必备类型也是具有的,Go中的字符串可以支持使用==、!=、>=进行排序

除了上面的基本类型的使用,Go中的数据类型不支持自动转换的,而是需要进行显式的类型转换

就好比

var x int = 10

var y float64 = 30.2

var z float64 = float(x) + y

发表评论

邮箱地址不会被公开。 必填项已用*标注