如何使用 Golang 安装 Gin

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)

在我的系统中,$GOROOTis/usr/local/go/$GOPATHis ~/go/

我怎么能解决这个问题?

ani*_*001 13

对于 Go 1.11 或更高版本,您应该使用Go Modules

如果您刚开始使用 Go,则应该从较新的版本开始。我认为您使用的 Go 版本已经支持 go 模块,因为您尝试获取的模块正在下载到~/go/pkg/mod/目录。

要使用 go 模块初始化项目,请运行:

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目录,这样如果在该项目的另一台机器上工作,您就不需要再次获取模块。