惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
Docker
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 聂微东
MyScale Blog
MyScale Blog
H
Help Net Security
Last Week in AI
Last Week in AI
T
The Blog of Author Tim Ferriss
M
MIT News - Artificial intelligence
大猫的无限游戏
大猫的无限游戏
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
P
Proofpoint News Feed
博客园 - 叶小钗
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
F
Fortinet All Blogs
Martin Fowler
Martin Fowler
Microsoft Security Blog
Microsoft Security Blog
T
Tailwind CSS Blog
aimingoo的专栏
aimingoo的专栏

博客园 - Morya

不当心升级到 redis 7.4 怎么回到 valkey8 使用 cert-manager 为 traefik 自动申请和续约 https 证书 traefik学习 k8s 1.28 安装配置 knative-serving v1.15.2 + cert-manager v1.16.1 ssh端口映射玩法 golang echo group 用法的微妙注意点 使用docker最小化部署Git CI环境 使用mailpopbox构建个人独享EmailServer Influx cli cheetsheet 通过php docker快速验证简单代码 通过k8s service代理外部服务 run gitlab-runner in k8s K8S配置traefik ingressroutes支持TLS ucloud k8s部署traefik的forward-auth 使用nginx构建限频、限速、限并发的应用保护层 macos 更改罗技k810无线键盘的映射 - Morya - 博客园 C++11 thread condition_variable mutex 综合使用 goland scope pattern 设置 hustOJ 添加 golang 支持
Go 1.11 Module 介绍 - Morya
Morya · 2018-10-27 · via 博客园 - Morya

Go 1.11 Module 介绍

go 1.11 发布了一种新的模式来管理go程序的依赖库,这种方式不同于vendor模型。

它主要提供下面几个重要特性:

  • 更方便的脱离GOPATH来工作(我理解是,逐渐淡化GOPATH,GOPATH一度给入门golang的新人留下很多坑)
  • 使用$GOPATH/pkg/mod来存储go mod的缓存文件,提高go get速度
  • 可选的$GOPROXY和goproxy交互机制
    • 提供公司级或局域网级私有go mod服务器
    • golang.org/x/text等老大难第三方依赖库提供缓存和提速

启用 go mod

为启用go mod,需要配置GO111MODULE环境变量:

  • GO111MODULE=off 无模块支持,go 会从 $GOPATHvendor 文件夹寻找包。
  • GO111MODULE=on 模块支持,go 会忽略 $GOPATHvendor 文件夹,只根据 go.mod 下载依赖。
  • GO111MODULE=auto$GOPATH/src 外面且根目录有 go.mod 文件时,开启模块支持。

go mod 对其它命令的影响

  1. go get
    1. 如果强制启用 go mod, go get现在支持针对版本号去get指定项目。
    2. go get必须在一个启用了 go mod 的项目的根目录去执行,这样执行过go get,将会自动改下本目录下的go.mod文件。
  2. go build
    1. go build 会先检查当前目录中go.mod记录的依赖,并检查$GOPATH/pkg/mod中的缓存,如果没有,则会启动go get流程。
    2. go build可以强制提供一个参数go build -mod vendor来使用vendor模式,而不是go mod自身在gopath中缓存的文件。

使用GOPROXY

此处有一个开源版本的 goproxy.io

和它的github主页 github.com/goproxyio

自建GOPROXY server

Athens is a Server for Your Go Packages

项目地址 https://github.com/gomods/athens

Athens可以用来在公司内部建立自己的私有go mod服务器,
或者在公网建立一个对外公开的GOPROXY server

参考: