go mod 使用及技巧

aside section ._1OhGeD · · 6905 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

[TOC]

首先

本文是建立在 go 1.12 及以上

常用go mod命令

go mod init 初始化当前文件夹, 创建go.mod文件
go mod edit 编辑go.mod文件
go mod graph 打印模块依赖图
go mod tidy 增加缺少的module,删除无用的module
go mod vendor 将依赖复制到vendor下
go mod verify 校验依赖
go mod why 解释为什么需要依赖
go mod download 下载依赖的module到本地cache(默认为$GOPATH/pkg/mod目录)

依赖替换replace

在国内访问golang.org/x的各个包都需要翻墙,你可以在go.mod中使用replace替换成github上对应的库

replace (
    golang.org/x/crypto v0.0.0-20180820150726-614d502a4dac => github.com/golang/crypto v0.0.0-20180820150726-614d502a4dac
    golang.org/x/net v0.0.0-20180821023952-922f4815f713 => github.com/golang/net v0.0.0-20180826012351-8a410e7b638d
    golang.org/x/text v0.3.0 => github.com/golang/text v0.3.0
)

整理依赖

  • 我们在代码中删除依赖代码后,相关的依赖库并不会在go.mod文件中自动移除
  • 这种情况下我们可以使用go mod tidy命令更新go.mod中的依赖关系

使用代理

GOPROXY="https://gocenter.io" GO111MODULE=on go build
GOPROXY="https://gocenter.io" GO111MODULE=on go install -v -a

在golang 1.11版本推出go mod的同时
还推出了一个新的环境变量GOPROXY
它的作用类似http(s)_proxy,用于为golang代码仓库做镜像代理

export GOPROXY=https://goproxy.io

注意,GOPROXY开启以后,若失败不会自动回源

GoCenter还推出了goc工具,它可以自动回源
如果你有使用Athens私有仓库,可以将GOPROXY设置为Athens,然后将GoCenter设置为Athens的remote repository

edit 编辑go.mod

go.mod格式化

因为我们可以手动修改go.mod文件,所以有些时候需要格式化该文件

go mod edit -fmt

添加依赖

go mod edit -require=golang.org/x/text

Error

in multiple modules

build command-line-arguments: cannot load github.com/ugorji/go/codec: ambiguous import: found github.com/ugorji/go/codec in multiple modules:
        github.com/ugorji/go v1.1.4 ($GOPATH\pkg\mod\github.com\ugorji\go@v1.1.4\codec)
        github.com/ugorji/go/codec v0.0.0-20190320090025-2dc34c0b8780 ($GOPATH\pkg\mod\github.com\ugorji\go\codec@v0.0.0-20190320090025-2dc34c0b8780)
mingw32-make: *** [Makefile:114: buildMainMod] Error 1
  • fix in go.mod add item
require (
    github.com/ugorji/go v1.1.7 // indirect
)

and run

go mod download &&  go mod tidy

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:aside section ._1OhGeD

查看原文:go mod 使用及技巧

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

6905 次点击  
加入收藏 微博
上一篇:Go-for range
下一篇:Go-map
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传