Go 软件包概念
2022/1/9小于 1 分钟GoGo软件包
Go 软件包概念
一些规定
- 大写字母开头可跨包调用
- 文件夹的名字可以和包名不同,同一文件夹下的各文件的包名得相同
import 从哪个路径开始找的
- go.mod 所在目录
- $GOROOT/src
- $GOPATH/src (Go 1.11 后需要
GO111MODULE=off
) - $GOPATH/vendor (Go 1.5)
- $GOPATH/pkg/mod (Go 1.11)
注意:
GOPATH 可以是多个路径
GOPATH="PATH1:PATH2"
init 函数
- main 执行前,先执行 import 包里所有的 init 函数
- 根据 import 顺序执行,是有序的
- 包里多文件都有多个 init 方法的顺序:先文件名排序,再 init 在文件中的排序
官方模块管理 go mod
go mod init 在项目跟目录创建 go.mod ,这个文件里就描述了包管理需要的数据
$GOPATH/pkg/mod : go get 后下载到这里
go mod tidy 可以根据代码 import 的包下载