概述
在上一节的内容中,我们介绍了Go的基础语法,包括:标识符、关键字、行分隔符、var关键字、:=运算符、空格、注释、package、import、输入输出、运算符、条件控制、循环等。在本节中,我们将介绍Go的基本数据类型。Go语言是一种静态类型的编程语言,这也就意味着,声明变量需要指定其具体类型,或者交由编译器进行自动推导。在Go语言中,数据类型是编程的基础,它定义了变量或表达式的存储方式和行为。
布尔类型
布尔类型(Boolean)用于表示真或假的值,可以为true或false。布尔类型被声明为bool,可以使用条件语句或逻辑运算符进行比较和操作。
与C/C++语言不同,Go语言中的布尔值并不会隐式转换为数字值0或1,反之亦然。另外,Go语言也不允许将整型强制转换为布尔型。
整数类型
整数类型(Integer)用于表示整数值,包括正数、负数和零。Go语言同时提供了有符号和无符号的整数类型,其中有符号整数包括:int8、int16、int32、int64,分别对应 8、16、32、64位大小的有符号整数,无符号整数包括:uint8、uint16、uint32、uint64,分别对应 8、16、32、64位大小的无符号整数。
另外,还有两种整数类型int和uint,分别对应特定CPU平台的字长。其中int表示有符号整数,应用最为广泛,uint表示无符号整数。由于编译器和计算机硬件的不同,int和uint所能表示的整数大小会在32位和64位之间变化。
注意:尽管在某些特定的运行环境下,int、uint、int32、uint32的大小可能相等,但它们仍然属于不同的数据类型。比如:int类型的大小可能是32位,但需要把int类型当做int32类型使用时,必须显式对类型进行转换,反之亦然。
除了上述的基本整数类型,Go语言还提供了其他几种整数类型,包括:
rune:该类型表示Unicode码点,通常用来表示一个Unicode字符。
byte:与uint8是同义词,表示一个字节。
uintptr:该类型的大小不确定,与平台和编译器有关,但足以存放指针。uintptr通常用于底层编程,特别是与C程序库交互的地方。
浮点数类型
浮点数类型(Float)用于表示带有小数点的数值,Go语言提供了float32(32位单精度浮点数)和float64(64位双精度浮点数)两种浮点数类型。单精度浮点数在内存中占用32位(4字节),可以表示的范围大约是±1.18E-38到±3.4E+38。双精度浮点数在内存中占用64位(8字节),可以表示的范围更大,大约是±2.23E-308到±1.80E+308。在Go语言中,可以使用关键字float32、float64来分别声明和初始化单精度浮点数、双精度浮点数。
注意:由于浮点数的精度问题,在进行浮点数计算时可能会产生误差。为了避免误差问题,尽量避免进行浮点数比较或直接比较浮点数的相等性,而应使用一个小的容忍度值进行比较。
复数类型
复数类型(Complex)用于表示复数值,由实部和虚部组成。Go语言提供了complex64(64位实数和虚数的复数)和complex128(128位实数和虚数的复数)两种复数类型。
注意:Go语言的复数类型是支持加、减、乘、除等基本运算的,可以使用相应的运算符进行复数运算。
字符串类型
字符串类型(String)用于表示文本数据,字符串是由零个或多个字符组成的不可变序列。Go语言中的字符串是不可变的字节序列,每个字符串都由一个指向字节数组的指针和长度组成。字符串的长度可以通过len()函数获取,而字符串的内容可以通过索引访问。
字符串还可进行连接、切片、比较、替换、分割等操作,可参考下面的示例代码。
💡 如果想阅读最新的文章,或者有技术问题需要交流和沟通,可搜索并关注微信公众号“希望睿智”。