这一期分享一下GO语言的数据类型,这一期先介绍基础类型,分为以下几个部分:
整型
布尔
浮点型
复数型
字符串
unicode字符型
一、整型
整数型是最常见,最常用的。类型有:
int8,int16,int,int32,int64有符号,占内存字节数:1,2,4,4,8
uint8,uint16,uint,uint32,uint64无符号,占内存字节数:1,2,4,4,8
uintptr指针整型同uint64,占内存字节数:8
取值范围看下面的例子,可以直接使用math包中的最大最小值,进行查看:
println("MaxInt8:",math.MaxInt8) println("MaxInt16:",math.MaxInt16) println("MaxInt:",math.MaxInt) println("MaxInt32:",math.MaxInt32) println("MaxInt64:",math.MaxInt64) println("MaxUint8:",math.MaxUint8) println("MaxUint16:",math.MaxUint16) println("MaxUint:",math.MaxUint) println("MaxUint32:",math.MaxUint32) println("MaxUint64:",math.MaxUint64) println("MaxInt8:",math.MinInt8) println("MaxInt16:",math.MinInt16) println("MaxInt:",math.MinInt) println("MaxInt32:",math.MinInt32) println("MaxInt64:",math.MinInt64) println("MinUint8:",math.MinUint8) println("MinUint16:",math.MinUint16) println("MinUint:",math.MinUint) println("MinUint32:",math.MinUint32) println("MinUint64:",math.MinUint64)
GO语言中不会像C/C++语言那样自动帮你类型转换,在GO中你必须显式的进行类型强制转换才行。这样从某一角度来看相对还安全了一些。最起码当你类型强转时你自己是知道的。而C/C++的是隐式的,容易忽略。
整型的加减乘除四则运算就不详细说了,要提一下除,整型相除会舍弃余数这点要注意。另一个要说的是求余数%操作。求余数这个操作挺常用,比如想把1-分别放入10个数组中,那么就可以把1-分别进行对10求余,余数就是第几个数组,向里放就行了。
再提一下整型的位移:
左移,如12
右移,如12
^异或,如1^2
与,如12
或,如1
2
^n取反,如^2
二、布尔
布尔型:bool,取值只有true和false两个。初始化可以直接使用true或者false初始化,也可以使用表达式:b:=(1==1),以这样的方式来初始化。
三、浮点型
分为float32和float64,占内存分别为4和8。浮点型在做等于比较时较为特殊,因为浮点数精度问题使用特殊手段来处理:
packagemainimport"math"constminFloat=0.funcfloat32Equal(f1,f2float32)bool{ turnmath.Abs(float64(f1-f2))minFloat}
就是取两者相减绝对值与最小精度值去比。
四、复数型
复数分为