一、基本数据类型
在 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的国度中,根据上边的划定的范围,可以进行创建常量和变量了。先来看下常量…
// 常量定义格式
const 常量名 [常量类型] = 值
学了其它编程语言的,看到这感觉不适应的,你的感觉没错,新的知识正在占领大脑!
从上边的定义格式,可以看到:
- const: 定义常量使用的是“const”关键词
- 常量名: 以后使用常量的话,尽量使用大写进行命名,并使用下划线分词
- 常量类型:只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型
- []中括号:可以进行省略,自动根据值进行类型推导
- 值:声明过后,不能被修改
// 常量// 显式声明// const LENGTH int = 10// 隐式声明 根据值 进行推导出数据类型const Length = 10// 不能进行修改Length = 20fmt.Println(Length)
另外,对于多个相同类型的声明可以简写为:
const Length, WIDTH = 10, 20
三、变量
变量怎么比喻呢?
我这边为了更好的理解,使用了上边的老中医药材柜图片,如果把各种各样的数据看作是各种药材的话!
每个抽屉代表go开辟的内存空间,进行储存药材(变量值),而外边的名称就是变量名(见名识意)!
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。
声明变量的一般形式是使用 var 关键字:
var 变量名 变量类型
可以了解到:
- var:声明变量使用“var”关键词
- 变量名:由字母、数字、下划线组成,其中首个字符不能为数字
- 变量类型:基本数据类型和符合类型
- 值:上边没有赋值,后续进行赋值操作。如果声明的时候进行赋值,可以省略变量类型,原因是go可以进行类型推导
// 变量// 变量声明// 第一种 声明后赋值var length intlength = 10// 第二种 声明时赋值//var width int = 20// 也可以去掉 变量类型 使用类型推导var width = 20// 第三种 省略var 注意 := 左侧的变量名 是没有声明过的,否则编辑报错height := 30fmt.Println(length, width, height)
多个变量同时声明
// 多个变量声明 省略类型 进行类型推导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的数据类型,说一个值,要立即反应出该值的数据类型
- 会声明常量/变量的
- 了解有哪些关键字,避免后续命名冲突