概述
什么是Go Modules
Go Modules 是 Golang 官方最近几个版本推出的原生的包管理方式,类似于php的composer、java的maven
1、使用方式
我的版本:
go version go1.13.6 windows/amd64
使用前需要开启环境变量 GO111MODULE off/on/auto
go env -w GO111MODULE=on
在 GOPATH 之外创建一个项目test,包含一个 main.go 文件,内容如下:
package main
import (
"github.com/labstack/echo"
"net/http"
)
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"))
}
在该项目根目录下执行,会在根目录下生成go.mod文件,这个文件中标识了我们的项目的依赖的 package 的版本。执行 init 暂时还没有将所有的依赖管理起来。我们需要将程序 run 起来(比如执行 go run/test),或者 build(执行命令 go build)的时候,才会触发依赖的解析
go mod init test
执行该文件 go run main.go,go.mod文件变成了这样
module echo
go 1.13
require (
github.com/labstack/echo v3.3.10+incompatible
github.com/labstack/gommon v0.3.0 // indirect
github.com/mattn/go-colorable v0.1.6 // indirect
github.com/valyala/fasttemplate v1.1.0 // indirect
golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d // indirect
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b // indirect
golang.org/x/text v0.3.2 // indirect
)
同时我们发现项目目录下多了一个 go.sum 用来记录每个 package 的版本和哈希值。go.mod 文件正常情况会包含 module 和 require 模块,除此之外还可以包含 replace 和 exclude 模块。
这些 package 并不是直接存储到 $GOPATH/src,而是存储到 $GOPATH/pkg/mod 下面,不同版本并存的方式
进阶知识
因为众所周知的原因,下载依赖包会出现各种稀奇古怪的事情,归根结底就是网络问题,所以要想规避类似问题,需要切换源,然后就能体验飞速下载的感觉了
go env -w GOPROXY=https://goproxy.cn,direct
文章引用:https://zhuanlan.zhihu.com/p/82109036
最后
以上就是如意山水为你收集整理的go modules使用的全部内容,希望文章能够帮你解决go modules使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复