课程要点
- 了解布尔类型
- 了解整数类型
- 了解浮点数类型
- 了解复数类型
- 了解字符串类型
- 了解字符类型
布尔类型
类型 | 名称 | 取值范围 | 说明 |
---|---|---|---|
bool | 布尔类型 | true 或false | 默认值为false |
示例
ok := trueprintln(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 = 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)
浮点数类型
类型 | 名称 | 取值范围 | 说明 |
---|---|---|---|
float32 | 32位浮点数类型 | -math.MaxFloat32 ~math.MaxFloat32 | 默认值为0 |
float64 | 64位浮点数类型 | -math.MaxFloat64 ~math.MaxFloat64 | 默认值为0 ,是小数字面量的默认类型 |
浮点数类型用于描述小数,采用IEEE-754
浮点数标准
示例
var f32 float32 = 1.1println(f32)var f64 float64 = 1.1println(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具有如此强大的生命力。
让我们来继续逐步深入学习吧!
作者: 陌上荼靡