Go语言编程教程-基本数据类型

课程要点

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

布尔类型

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

示例

ok := true
println(ok)

整数类型

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

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

示例

var uint8N uint8 = 255
println(uint8N)

var uint16N uint16 = 65535
println(uint16N)

var uint32N uint32 = 4294967295
println(uint32N)

var uint64N uint64 = 18446744073709551615
println(uint64N)

var int8N int8 = 127
println(int8N)

var int16N int16 = 32767
println(int16N)

var int32N int32 = 2147483647
println(int32N)

var int64N int64 = 9223372036854775807
println(int64N)

var intN int = 1
println(intN)

var uintN uint = 1
println(uintN)

var uintptrN uintptr = 1
println(uintptrN)

var byteN byte = 255
println(byteN)

var runeN rune = '中'
println(runeN)

浮点数类型

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

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

示例

var f32 float32 = 1.1
println(f32)

var f64 float64 = 1.1
println(f64)

复数类型

类型 名称 取值范围 说明
complex64 64位复数类型 实部与虚部取值同float32 由两个float32类型组成的复数
complex128 128位复数类型 实部与虚部取值同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具有如此强大的生命力。

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