GoLang 的数据类型
在 GoLang 中,数据类型用于声明函数和变量。数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。
GoLang 有以下几种数据类型:
类型 | 描述 |
---|---|
布尔 | 基本数据类型,只有两个值,并且只可以是常量 —— true 或者 false 。 |
数值 | 基本数据类型,GoLang 支持整型、浮点型数字,并且支持复数,其中位的运算采用补码。 |
字符串 | 基本数据类型,GoLang 中 string 类型被官方定为基本数据类型,是一串由单个字节连接起来的字符序列。GoLang 字符串的字节使用 UTF-8 编码标识 Unicode 文本。 |
派生 | 派生类型包括很多种,其中有:指针、数组、结构体、管道、切片、接口、集合 。(关于派生数据类型会有单独的篇章来讲解,这里不赘述。) |
数值类型
整型
类型 | 描述 |
---|---|
int | 基于架构的类型,长度根据宿主机的机器字长决定,在 32 位操作系统上为 32 位,在 64 位操作系统上为 64 位 |
int8 | 有符号 8 位整型 (-128 到 127) |
int16 | 有符号 16 位整型 (-32768 到 32767) |
int32 | 有符号 32 位整型 (-2147483648 到 2147483647) |
int64 | 有符号 64 位整型 (-9223372036854775808 到 9223372036854775807) |
uint | 无符号整型,长度同 int |
uint8 | 无符号 8 位整型 (0 到 255) |
uint16 | 无符号 16 位整型 (0 到 65535) |
uint32 | 无符号 32 位整型 (0 到 4294967295) |
uint64 | 无符号 64 位整型 (0 到 18446744073709551615) |
rune | 和 int32 类型等价,Unicode 字符类型,通常用于表示一个 Unicode 码点。rune 和 int32 可以互换使用。 |
byte | 和 uint8 类型等价,byte类型一般用于强调数值是一个原始的数据而不是 一个小的整数。GoLang 中 byte 类型可以用于表示字符(char)。 |
uintptr | 一种无符号的整数类型,没有指定具体的bit大小但是足以容纳指针。 uintptr类型只有在底层编程是才需要,特别是Go语言和C语言函数库或操作系统接口相交互的地方。 |
浮点型
类型 | 描述 |
---|---|
float32 | 32位浮点数 (约 - 3.4003e + 38 到 3.4003e + 38) |
float64 | 64位浮点数 (约 - 1.798e + 308 到 - 1.798e + 308) |
复数类型
类型 | 描述 |
---|---|
complex64 | 32 位实数和虚数 |
complex128 | 64 位实数和虚数 |
布尔类型
bool 类型表示真假值,只能为
true
或false
。通常用来控制程序流程,在逻辑运算、迭代和递归中经常使用。注意,GoLang 中的布尔值不能用零和非零来表示。
字符串类型
字符
- Golang 中没有专门的字符(char)类型,如果要存储单个字符 (数字或字母) ,一般使用 byte 来保存。
- 字符( byte )直接输出时,输出的是对应字符的 ASCII 码值。
- 可以直接给某个变量赋值一个数值,然后按格式化输出时 %c ,会输出该数字对应的 Unicode 字符。
- GoLang 的字符和字符串使用 UTF-8 编码,英文字母占一个字符,汉字占三个字符。
- 当保存的字符 ASCII 码值大于 255,如汉字,byte 类型就无法保存,此时可以使用 uint 或 int 类型保存。
字符串
- 不能用单引号
'
包裹,如果遇到用单引号包裹的,则是字符(用 byte 类型声明),不是字符串。- 字符串一旦赋值了,就不能修改,只能重新赋值。
- 字符串有两种标识形,用双引号包裹
"abcd\n"
和 用反引号包裹`abcd\n`
。用双引号包裹的字符串可以识别转义字符(即输出abcd
后会换行),用反引号包裹的字符串则以原生形式输出,包括换行和特殊字符(即输出abcd\n
),可以实现防止攻击、输出源代码等效果。
以上内容来源于网络,并加上自己的实践和理解,如有错误的地方,请在评论区指正。
本篇内容来自 [菜鸟教程]https://www.runoob.com/go/go-data-types.html
上一篇 [GoLang - 基础语法]https://www.jianshu.com/p/0c815bed6abe
有疑问加站长微信联系(非本文作者)