一、基本数据类型
在 Go 编程语言中,数据类型用于声明函数和变量。
数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。
Go 基本数据类型
类别 | 类型 | 描述 | 零值 | 示例 | 取值范围 |
---|---|---|---|---|---|
布尔型 | bool |
逻辑值,表示真或假 | false |
true , false |
true 或 false |
整数型 | int |
平台相关有符号整数(32位系统=32位,64位系统=64位) | 0 |
42 , -10 |
32位系统:-2³¹ ~ 2³¹-1 64位系统:-2⁶³ ~ 2⁶³-1 |
int8 |
8位有符号整数 | 0 |
127 , -128 |
-128 ~ 127 |
|
int16 |
16位有符号整数 | 0 |
32767 , -32768 |
-32768 ~ 32767 |
|
int32 |
32位有符号整数(别名 rune ) |
0 |
2147483647 |
-2147483648 ~ 2147483647 |
|
int64 |
64位有符号整数 | 0 |
9223372036854775807 |
-9223372036854775808 ~ 9223372036854775807 |
|
uint |
平台相关无符号整数(大小同 int ) |
0 |
100 |
32位系统:0 ~ 2³²-1 64位系统:0 ~ 2⁶⁴-1 |
|
uint8 |
8位无符号整数(别名 byte ) |
0 |
255 , 0x0A |
0 ~ 255 |
|
uint16 |
16位无符号整数 | 0 |
65535 |
0 ~ 65535 |
|
uint32 |
32位无符号整数 | 0 |
4294967295 |
0 ~ 4294967295 |
|
uint64 |
64位无符号整数 | 0 |
18446744073709551615 |
0 ~ 18446744073709551615 |
|
uintptr |
无符号整数,用于存储指针地址 | 0 |
系统内存地址 | 足够存储指针值的整数 | |
浮点型 | float32 |
IEEE-754 32位单精度浮点数 | 0.0 |
3.14 , -0.001 |
约 ±1.18e⁻³⁸ ~ ±3.4e³⁸ ,精度约6位小数 |
float64 |
IEEE-754 64位双精度浮点数(默认浮点类型) | 0.0 |
3.1415926535 , -2.5e10 |
约 ±2.23e⁻³⁰⁸ ~ ±1.8e³⁰⁸ ,精度约15位小数 |
|
复数型 | complex64 |
由两个 float32 组成(实部+虚部) |
(0+0i) |
1+2i , 3i |
实部/虚部范围同 float32 |
complex128 |
由两个 float64 组成(实部+虚部) |
(0+0i) |
1.5+3.2i |
实部/虚部范围同 float64 |
|
字符串型 | string |
不可变的 UTF-8 字符序列 | "" |
"Hello" , "世界" |
任意字节序列(支持 Unicode) |
字节别名 | byte |
uint8 的别名,用于二进制数据 |
0 |
'a' , 0x41 |
同 uint8 (0 ~ 255 ) |
字符别名 | rune |
int32 的别名,表示 Unicode 码点 |
0 |
'中' , '\u4e2d' |
同 int32 (支持所有 Unicode 字符) |

同其它编程语言一样,go的数据类型基本覆盖人类文化内容,数字、字符串、布尔、复数
二、常量
在go的国度中,根据上边的划定的范围,可以进行创建常量和变量了。先来看下常量...
go
// 常量定义格式
const 常量名 [常量类型] = 值
学了其它编程语言的,看到这感觉不适应的,你的感觉没错,新的知识正在占领大脑!
从上边的定义格式,可以看到:
- const: 定义常量使用的是"const"关键词
- 常量名: 以后使用常量的话,尽量使用大写进行命名,并使用下划线分词
- 常量类型:只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型
-
\]中括号:可以进行省略,自动根据值进行类型推导
go
// 常量
// 显式声明
// const LENGTH int = 10
// 隐式声明 根据值 进行推导出数据类型
const Length = 10
// 不能进行修改
Length = 20
fmt.Println(Length)

另外,对于多个相同类型的声明可以简写为:
go
const Length, WIDTH = 10, 20
三、变量

变量怎么比喻呢?
我这边为了更好的理解,使用了上边的老中医药材柜图片,如果把各种各样的数据看作是各种药材的话!
每个抽屉代表go开辟的内存空间,进行储存药材(变量值),而外边的名称就是变量名(见名识意)!
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。
声明变量的一般形式是使用 var 关键字:
go
var 变量名 变量类型
可以了解到:
- var:声明变量使用"var"关键词
- 变量名:由字母、数字、下划线组成,其中首个字符不能为数字
- 变量类型:基本数据类型和符合类型
- 值:上边没有赋值,后续进行赋值操作。如果声明的时候进行赋值,可以省略变量类型,原因是go可以进行类型推导
go
// 变量
// 变量声明
// 第一种 声明后赋值
var length int
length = 10
// 第二种 声明时赋值
//var width int = 20
// 也可以去掉 变量类型 使用类型推导
var width = 20
// 第三种 省略var 注意 := 左侧的变量名 是没有声明过的,否则编辑报错
height := 30
fmt.Println(length, width, height)
多个变量同时声明
go
// 多个变量声明 省略类型 进行类型推导
var a, b, c = 10, 20.8, "hello"
fmt.Println(a, b, c)
四、关键字
什么是关键字,就是go语言已经使用过的关键词,我们不能再使用了,命名包名、文件名、声明变量名、函数名等,为了避免冲突不能使用!
下面列举了 Go 代码中会使用到的 25 个关键字或保留字:
break | default | func | interface | select |
---|---|---|---|---|
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
除了以上介绍的这些关键字,Go 语言还有 36 个预定义标识符:
append | bool | byte | cap | close | complex | complex64 | complex128 | uint16 |
---|---|---|---|---|---|---|---|---|
copy | false | float32 | float64 | imag | int | int8 | int16 | uint32 |
int32 | int64 | iota | len | make | new | nil | panic | uint64 |
println | real | recover | string | true | uint | uint8 | uintptr |
程序一般由关键字、常量、变量、运算符、类型和函数组成。
附
本次作业
- 熟练知道go的数据类型,说一个值,要立即反应出该值的数据类型
- 会声明常量/变量的
- 了解有哪些关键字,避免后续命名冲突