1.Package
- package是最基本的分发单位和工程管理中依赖关系的体现;
- 每个Go语言源代码文件开头都拥有一个package声明,表示源码文件所属代码包;
- 要生成Go语言可执行程序,必须要有main的Package包,且必须在该包下有main()函数;
- 同一个路径下只能存在一个package,一个package可以拆成多个源文件组成。
2.import
- import语句可以导入源码文件所依赖的package包
- 不得导入源码文件中没有用到的package,否则Go语言编译器会报编译错误
- import语法格式有两种
//第一种
import "package1"
import "package2"
import "package3"
//第二种
import (
"package1"
"package2"
"package3"
)
3. import 原理
- 如果一个main导入其他包,包将被顺序导入;
- 如果导入的包中依赖其他包(B包),会首先导入B包,然后初始化B包中的常量和变量,最后如果B包中有init(),会自动执行init();
- 所有包导入完成后才会对main中常量和变量进行初始化,然后执行main中的init函数(若存在),最后执行main函数;
- 如果一个包被导入多次则该包只会被导入一次。
4.import 别名: "." , "_"
- 别名操作的含义是:将导入的包命名为另个一个容易记忆的别名;
- 点(.)操作的含义是:点(.)标识的包导入后,调用该包中函数时可以省略前缀包名
- 下划线(_)操作的含义是:导入该包,但不导入整个包,而是执行该包中的init函数,因此无法通过包名来调用包中的其他函数,使用下划线(_)操作,往往是为了注册包中的引擎,让外部可以方便的使用。
5.数据类型
- 整型、浮点型、复数、字符串和布尔
- uint8、uint32、uint64、int8、int32、int64、float32、float64、complex64、complex128、byte、rune、uint、int、unitptr
- 派生类型
- 指针类型(Pointer)、数组类型、结构化类型(struct)、Channel(chan)、函数类型(func)、切片类型(slice)、接口类型(interface)、Map类型(map)
- 类型零值和类型别名
- 类型零值不是空值,而是某个变量被声明后的默认值,一般情况下,值类型的默认值为0,布尔类型默认值为false,String默认值为空字符串。我们也可以对类型设置别名。
- 类型存储大小