$GOPATH
- 允许设置多个路径
- GOPATYH目录结构
goWorkSpapce //GOPATH目录
-- bin //编译可执行文件存放的路径,可自动生成
-- pkg ///.a中间文件存放路径,可自动生成
-- src //源码路径
GO get
- 1.从远程下载需要的包 2.执行go install
GO install
-
编译生成可执行文件,放在GOBIN路径下,GOBIN默认是在GOPATH/bin文件夹下
-
如果不用额外方式改变环境变量(公司目前用的是sh脚本编译),是编译不过的。报错:can’t load package: package .: no buildable Go source files in ***
编译问题
- 问题:多个project会导致多个GOPATH目录,而go优先使用第一个GOPATH目录,会导致编译冲突
- 解决方法
-
使用如下目录:多个project或工具组件都放在GOPATH的src下
-
此时GOBIN可以为空
-
GOPATH目录和GOPATH下的src不应该添加到源代码管理中,而是各个project目录myApp1、myApp2、myApp3各自时独立的进行源代码管理
-
goWorkSpace // goWorkSpace为GOPATH目录 -- bin -- myApp1 // 编译生成 -- myApp2 // 编译生成 -- myApp3 // 编译生成 -- pkg -- src -- common 1 -- common 2 -- common utils ... -- myApp1 // project1 -- models -- controllers -- others -- main.go -- myApp2 // project2 -- models -- controllers -- others -- main.go -- myApp3 // project3 -- models -- controllers -- others -- main.go
-
go mod包管理
- 优势:不受GOPATH的限制,可以在任意的文件夹下创建工程
- 例子:在GoLand中使用go mod模式创建工程,会自动生成go.mod文件,然后就可以正产编译包了
命令行使用方式
-
设置变量GO111MODULE为on
-
go mod init + projectname:初始化mod
-
go.mod称为模块根,定义了它所在目录为一个模块
-
使用go build main.go编译