课程要点

  1. 了解布尔类型
  2. 了解整数类型
  3. 了解浮点数类型
  4. 了解复数类型
  5. 了解字符串类型
  6. 了解字符类型

布尔类型

类型名称取值范围说明
bool布尔类型truefalse默认值为false

示例

ok := trueprintln(ok)

整数类型

类型名称取值范围说明
uint88位无符号整型0~255
uint1616位无符号整型0~65535
uint3232位无符号整型0~4294967295
uint6464位无符号整型0~18446744073709551615
int88位有符号整型-128~127
int1616位有符号整型-32768~32767
int3232位有符号整型-2147483648~2147483647
int6432位有符号整型-9223372036854775808~9223372036854775807
int有符号整型32位系统同int32,64位系统同int64类型大小随操作系统的位数而定,是整数字面量的默认类型
uint无符号整型32位系统同uint32,64位系统同uint64类型大小随操作系统的位数而定
uintptr指针类型32位系统同uint32,64位系统同uint64用于描述指针的地址,类型大小同uint类似
byte字节类型uint8int8的别名,用于描述字节
rune字符类型int32int32的别名,用于描述单个字符

上述整数类型默认值都为0,其中uintptrbyterune是特殊用途的整数类型,
在整数类型的基础上赋予了额外的语义,使其具有更加强大的功能,后续会进行更加深入的解析和应用。

示例

var uint8N uint8 = 255println(uint8N)var uint16N uint16 = 65535println(uint16N)var uint32N uint32 = 4294967295println(uint32N)var uint64N uint64 = 18446744073709551615println(uint64N)var int8N int8 = 127println(int8N)var int16N int16 = 32767println(int16N)var int32N int32 = 2147483647println(int32N)var int64N int64 = 9223372036854775807println(int64N)var intN int = 1println(intN)var uintN uint = 1println(uintN)var uintptrN uintptr = 1println(uintptrN)var byteN byte = 255println(byteN)var runeN rune = '中'println(runeN)

浮点数类型

类型名称取值范围说明
float3232位浮点数类型-math.MaxFloat32~math.MaxFloat32默认值为0
float6464位浮点数类型-math.MaxFloat64~math.MaxFloat64默认值为0,是小数字面量的默认类型

浮点数类型用于描述小数,采用IEEE-754浮点数标准

示例

var f32 float32 = 1.1println(f32)var f64 float64 = 1.1println(f64)

复数类型

类型名称取值范围说明
complex6464位复数类型实部与虚部取值同float32由两个float32类型组成的复数
complex128128位复数类型实部与虚部取值同float64由两个float64类型组成的复数

复数包含实部和虚部,由两个浮点数组成,我们可以使用内置的complex函数来创建复数类型,
并且使用realimag函数分别获取复数的实部和虚部。

示例

// 创建complex64类型的复数c64 := complex(float32(1.1), float32(1.2))// 获取实部real64 := real(c64)// 获取虚部imag64 := imag(c64)println(c64)println(real64)println(imag64)// 创建complex128类型的复数c128 := complex(1.1, 1.2)// 获取实部real128 := real(c128)// 获取虚部imag128 := imag(c128)println(c128)println(real128)println(imag128)

字符串类型

类型名称取值范围说明
string字符串类型通常取值为UTF-8支持的Unicode字符集string本质上是一个byte集合,所以也可以表示UTF-8编码之外的字符集

string类型的默认值为空字符串,同大多数编程语言一样,Golang中的字符串类型的值也是不可变的。

string类型在底层实际是用byte数组来存储的,所以我们可以直接将其与byte切片进行相互转换,
后续会有单独的章节对字符串类型进行详细介绍,这里只做简单的介绍和了解。

在Golang中并没有名为char的字符类型,但是我们可以使用上文提到过的rune类型来描述一个合法字符,
也可以直接将字符转换为字符串,如下所示

示例

s := "hello world"println(s)// 将字符串转为byte切片bytes := []byte(s)println(bytes)// 将byte切片转为字符串s2 := string(bytes)println(s2)// 定义一个字符var char rune = '文'// 将字符转为字符串s = string(char)println(s)

小结

通过上述的简单介绍,我们对Golang的基本数据类型有了一个初步的了解,和其他主流的编程语言非常相似,
如果你有一定的编程基础,相信你很快就能掌握它。

如果你没有相关的经验也没有关系,后续的教程中,我们会不断的用到这些基础类型,
并且对一些常用的基本数据类型进行更进一步的深入探索。

当然了,这些还不是Golang数据类型中的全部,Golang中还有更加复杂的复合类型,
它们具有更加强大的功能以及更加灵活的使用方式,正是因为有了它们作为Golang的基石,
才使得Golang具有如此强大的生命力。

让我们来继续逐步深入学习吧!

作者: 陌上荼靡