定义
- Go语言的源码复用是建立在包基础之上的
- Go语言中的包, 就是包含 go 文件的目录
语法
package main // 写在文件开头, 用于声明包名, 编译必须要有main包
import (
// 内置
"fmt"
"time"
// 自定义包
m "xx/xx/xx/mystu" // 给包起别名
"xx/xx/xx/mymath" // 导入自定义的包
_ "xx.xx.xx" // 匿名导入包, 常用语导入驱动, 执行init()
// 第三方的包
"gitlab/xx/xx"
)
命名
- 包名不能包含"-"
- 同一目录下可以有多个 go 文件, 文件名可以和包名不同
- 目录名, 文件中 package 关键字声明的包名建议相同
- 一个目录下的 go 文件, 声明的包是同一个
导入
- 从$GOPATH/src/后开始计算, 使用/分隔
main 包
- 一个特殊的包, 作为程序的入口包
- 不包含 main 包声明, 无法编译
调用
- 包内调用, 可以不大写
- 包与包之间的调用, 需要首字母大写
init()方法
使用
package a
// init() 没有参数, 没有返回值, 在全局变量定以后执行
import "fmt"
func init() {
fmt.Println("a init")
}
执行顺序
- 顺序导入的状态下, 会按照导入的顺序执行
- 嵌套导入的状态下, 会先执行最里层的 init()