配置环境变量
export GO111MODULE=auto
#auto 自动
#on 使用mod
#off 不使用mod
export GOPROXY=https://goproxy.io
#更改之后通过goproxy.io下载会很顺利(尤其有墙的时候)
export GOPROXY=https://mirrors.aliyun.com/goproxy/
#阿里云提供的go moudule代理仓库(相比上一个推荐用这个)
在任意位置创建hello.go文件,写入如下内容:
package main
import (
"fmt"
"github.com/astaxie/beego"
)
func main() {
beego.run()
fmt.Println("hello go mod")
}
go mod init hello
这里的hello
是指module名
不需要下载依赖包
go
会下载的依赖放在gopath/pkg/mod/
下
当我们遇上有些包无法下载(需要外网访问)时,我们可以在mod文件中用replace命令,让程序去GitHub上去找代码,如:
module hello
go 1.12
replace (
golang.org/x/crypto => github.com/golang/crypto latest
golang.org/x/net => github.com/golang/net latest
golang.org/x/sync => github.com/golang/sync latest
golang.org/x/sys => github.com/golang/sys latest
golang.org/x/text => github.com/golang/text latest
golang.org/x/tools => github.com/golang/tools latest
)
此时,这些包被下载到了$GOPATH/pkg/mod里面,其中,mod文件夹是自动创建的。
也可以指定自己的文件路径:
replace (
github.com/astaxie/beego => /home/mod/astaxie/beego
)
新建文件夹utils,创建文件test.go:
package utils
import "fmt"
func Test() {
fmt.Println("Test")
}
在hello.go中调用:
package main
import (
"fmt"
"github.com/astaxie/beego"
"hello/utils"
)
func main() {
utils.Test()
beego.run()
fmt.Println("hello go mod")
}
注意:
hello/utils格式是module名/包名
go mod tidy
根据项目代码,下载需要的依赖包,下载到$GOPATH/pkg/mod下面
go mod tidy
把当前项目需要的依赖包,拷贝到当前工程下,创建vendor
文件夹
使用vendor
库编译
go build --mod vendor -o 编译目标名字