在CentOS 7上使用Go版本go1.17.1 linux/amd64
。GOPATH
和GOROOT
在我的.bashrc
中按顺序设置:
export GOPATH="${HOME}/.go"
export GOROOT="/usr/local/go"
export PATH="$PATH:${GOPATH}/bin:${GOROOT}/bin"
Got my project in/home/wsb/_projects/local/parlance
:
[wsb@localhost local]$ pwd
/home/wsb/_projects/local
[wsb@localhost local]$ tree
.
└── parlance/
└── main.go
└── utils.go
从终端,使用go get
将src存储在/home/wsb/.go/pkg/mod/cache...
文件夹
[wsb@localhost parlance]$ go get -v -u github.com/gorilla/mux
go: downloading github.com/gorilla/mux v1.8.0
github.com/gorilla/mux
[wsb@localhost parlance]$ go build main.go
main.go:3:8: no required module provides package github.com/gin-gonic/gin: go.mod file not found in current directory or any parent directory; see 'go help modules'
[wsb@localhost parlance]$
[root@localhost /]# find -iname gin
./home/wsb/.go/pkg/mod/cache/download/github.com/gin-gonic/gin
为什么会在构建时抛出错误?
使用go mod
是管理任何特定项目的包的关键。
go mod
用于安装和跟踪GOPATH
包之外的外部包。
从现有项目根目录parlance
中初始化go mod
,使用:
[wsb@localhost parlance]$ go mod parlance
它在项目根目录下创建两个文件:go.mod
和go.sum
。
现在我们可以go get
任何模块,我们将使用专门为我们的项目。
go get github.com/gin-gonic/gin
go get github.com/gofiber/fiber/v2
这将在go.mod
中创建外部包需求细节,并在go.sum
文件中创建各自的校验和。
最后,我们可以像
那样构建/运行我们的包go build main.go
go run main.go