Yve*_*ves 8 linux webserver module go go-gin
我是 Golang 的新手,我正在尝试使用Gin在 Ubuntu 16.04 上开发 Web 服务器。
执行后go get -u github.com/gin-gonic/gin
,会出现很多文件夹~/go/pkg/mod/github.com/
。
然后我试着举个例子:
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}
Run Code Online (Sandbox Code Playgroud)
但是,go run example.go
犯了错误:
example.go:3:8: cannot find package "github.com/gin-gonic/gin" in any of:
/usr/local/go/src/github.com/gin-gonic/gin (from $GOROOT)
/home/zyh/go/src/github.com/gin-gonic/gin (from $GOPATH)
Run Code Online (Sandbox Code Playgroud)
在我的系统中,$GOROOT
is/usr/local/go/
和$GOPATH
is ~/go/
。
我怎么能解决这个问题?
ani*_*001 13
对于 Go 1.11 或更高版本,您应该使用Go Modules。
如果您刚开始使用 Go,则应该从较新的版本开始。我认为您使用的 Go 版本已经支持 go 模块,因为您尝试获取的模块正在下载到~/go/pkg/mod/
目录。
go mod init your-project-name
Run Code Online (Sandbox Code Playgroud)
这将go.mod
在您的项目目录中创建一个文件。
go mod tidy
Run Code Online (Sandbox Code Playgroud)
这将go.mod
使用适当的模块填充文件并go.sum
在您的项目目录中创建一个。go.sum 包含每个模块版本的预期加密哈希。
之后,该go run example.go
命令应该可以毫无问题地运行该程序。
go mod vendor
Run Code Online (Sandbox Code Playgroud)
这会将所有供应商带到您的项目/vendor
目录,这样如果在该项目的另一台机器上工作,您就不需要再次获取模块。