| 关键字 | 作用 | 一级分类 | 二级分类 | 三级分类 |
|---|---|---|---|---|
| var | 变量声明 | 基本结构 | 变量与常量 | - |
| const | 常量声明 | 基本结构 | 变量与常量 | - |
| package | 包声明 | 基本结构 | 包管理 | - |
| import | 包引用 | 基本结构 | 包管理 | - |
| func | 函数声明 | 基本组件 | 函数 | - |
| return | 函数返回 | 基本组件 | 函数 | - |
| interface | 接口 | 基本组件 | 自定义类型 | - |
| struct | 结构体 | 基本组件 | 自定义类型 | - |
| type | 定义类型 | 基本组件 | 自定义类型 | - |
| map | 基本组件 | 引用类型 | - | |
| range | 基本组件 | 引用类型 | - | |
| go | 流程控制 | 并发 | - | |
| select | 流程控制 | 并发 | - | |
| chan | 流程控制 | 并发 | - | |
| if | 流程控制 | 单任务流程控制 | 单分支流程 | |
| else | 流程控制 | 单任务流程控制 | 单分支流程 | |
| switch | 流程控制 | 单任务流程控制 | 多分支流程 | |
| case | 流程控制 | 单任务流程控制 | 多分支流程 | |
| default | 流程控制 | 单任务流程控制 | 多分支流程 | |
| fallthrough | 流程控制 | 单任务流程控制 | 多分支流程 | |
| for | 流程控制 | 单任务流程控制 | 循环流程 | |
| break | 流程控制 | 单任务流程控制 | 循环流程 | |
| continue | 流程控制 | 单任务流程控制 | 循环流程 | |
| goto | 流程控制 | 单任务流程控制 | ||
| defer | 流程控制 | 延时流程控制 |
类型
数据类型
在 Go 编程语言中,数据类型用于声明函数和变量。
数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。
Go 语言按类别有以下几种数据类型:
| 类型 | 长度 | 默认值 | 说明 |
|---|---|---|---|
| bool | 1 | false | |
| byte | 1 | 0 | uint8 |
| int,uint | 4,8 | 0 | 默认整数类型,依据目标平台,32或64 |
| int8,uint8 | 1 | 0 | -128 |
| int16,uint16 | 2 | 0 | -2^15~(2^15)-1,0~(2^15)-1 |
| int32,uint32 | 4 | 0 | -2^31~(2^31)-1,0~(2^31)-1 |
| int64,uint64 | 8 | 0 | -2^63~(2^63)-1,0~(2^63)-1 |
| float32 | 4 | 0.0 | |
| float64 | 8 | 0.0 | 默认浮点数类型 |
| string | "" | 字符串,默认值为空字符串,而非NULL | |
| array | 数组 | ||
| struct | 结构体 | ||
| interface | nil | 接口 | |
| function | nil | 函数 | |
| map | nil | 字典,引用类型 | |
| slice | nil | 切片,引用类型 | |
| channel | nil | 通道,引用类型 |
变量定义
在数学概念中,变量表示没有固定值且可改变的数。但从计算机系统实现角度来看,变量是一段或多段用来存储数据的内存。
作为静态类型语言,go变量总是有固定的数据类型,类型决定了变量内存的长度和存储格式。我们只能修改变量值,无法改变类型。
var关键字定义
关键字var用于定义变量,和C不同,类型被放在变量后面。若显式提供初始值,可省略变量类型,由编译器推断。 变量定义时,除var关键字外,还可使用更加简短的变量定义和初始化语法。
package main
import "fmt"
func main() {
x := 10 // 使用 := 进行定义并初始化
fmt.Println(x) // 输出语句 10
使用简短模式的一些限制:
-
定义变量,同时显式初始化。
-
不能提供数据类型。
- 只能用在函数内部,不能用在全局变量中。
多变量赋值
进行多变量赋值操作时,首先计算出等号右边值,然后再依次完成赋值操作。