Go语言编程教程-基本数据类型
课程要点
- 了解布尔类型
- 了解整数类型
- 了解浮点数类型
- 了解复数类型
- 了解字符串类型
- 了解字符类型
布尔类型
类型 | 名称 | 取值范围 | 说明 |
---|---|---|---|
bool | 布尔类型 | true 或false |
默认值为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
,其中uintptr
、byte
、rune
是特殊用途的整数类型,
在整数类型的基础上赋予了额外的语义,使其具有更加强大的功能,后续会进行更加深入的解析和应用。
示例
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
函数来创建复数类型,
并且使用real
和imag
函数分别获取复数的实部和虚部。
示例
// 创建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具有如此强大的生命力。
让我们来继续逐步深入学习吧!