## 25个关键字
![](https://gitee.com/echohiyang/markdown-images/raw/master/OrKn0E.jpg)
## 36个标识符
![](https://gitee.com/echohiyang/markdown-images/raw/master/7OkueN.jpg)
## package
package 是最基本的分发单位和工程管理中依赖关系的体现
每个go语言代码文件卡头都有一个package声明,表示源码文件所属的代码包
要生成go语言可执行程序,必须要有main的package包,且在该包下必须有main()函数
同一路径下只能存在一个package,一个package可以拆成多个源码文件
## import 代码包的导入
import 的基本原理
* 如果一个main导入其他包,包将被顺序导入
* 如果导入的包中以来其他包(包B),会首先导入B包,然后初始化B包中的常量与变量,最后如果B中有init,会自动执行initial();
* 所有包到入完成之后才会对main中常量和变量进行初始化,然后执行main中的init函数(如果存在),最后执行main函数;
* 如果一个包被导入多次则该包只会被导入一次;
### 别名
~~~
import str "strings" # 创建strings的别名
~~~
### 本地化导入
~~~
import . "strings" # 不用使用前缀,直接使用代码包中的函数
~~~
### 仅执行初始化 init
~~~
import - "strings"
~~~
代码包的初始化函数,即无参数声明和结果声明的init函数。
#### init函数的执行时机
在程序入口main函数之前执行
### 退出返回值
go main 函数不支持返回值,返回值通过 os.Exit() 实现
![](https://gitee.com/echohiyang/markdown-images/raw/master/75dJtU.jpg)
![](https://gitee.com/echohiyang/markdown-images/raw/master/2HQZed.jpg)