文章目录
Go modules
言简意赅,go-modules就是一个包管理工具,是用来解决我们通过 go get 下载第三方类库到go path后的第三方类库版本管理的问题
使用流程
首先,新建项目目录并且初始化模块
mkdir demo1 && cd demo1
go mod init demo
第一个指令:
go mod init 模块名
执行后,会生成一个go.mod文件:
module demo1
go 1.16
一开始的时候内容比较少,只有模块名和go版本
其次,新建一个main.go
package main
import (
"net/http"
"github.com/labstack/echo"
)
func main() {
e := echo.New()
e.GET("/", func(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
})
e.Logger.Fatal(e.Start(":1323"))
}
可以看到一开始是报红的,即module下没有相关第三方类库
执行go mod tidy
go mod tidy
执行tidy后会检查项目中依赖,如果缺少相关依赖则引入,如果有些依赖没有用到,会删除,起到一个依赖整理的作用
可以看到执行完后,依赖被引入,也不报红了
再看下go.mod文件:
module demo1
go 1.16
require (
github.com/labstack/echo v3.3.10+incompatible
github.com/labstack/gommon v0.3.0 // indirect
github.com/stretchr/testify v1.7.0 // indirect
golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf // indirect
)
required是自动加上的
执行go mod download可以将依赖下载到本地
go mod download
如果要查看当前模块依赖的第三类库可以执行go list
go list -m all
将搭建的项目跑起来:
go run main.go
访问localhost:1323即可得到hello world