[Golang] go modules使用
关于go modules的使用外面的教程实在太多了,我这里只讲下我自己使用的三种情形。
准备工作:
1、新建个文件加gomod_test。
2、在这个目录输入命令 go mod init gomod_test
情形一:比较常见的情况,引用github的包
比方我有如下代码 main.go
package main import (
"fmt" "github.com/name/foo"
) func main() {
foo.Foo()
}
直接命令 go mod tidy,然后就可以go build编译
情形二:引用自己工程里的包
目录结构如下
gomod_test
|-----main.go
|-----mypackage
|---------mypackage.go
main.go要引用mypackage包,代码改成如下。
注意 "gomod_test/mypackage",gomod_test是我们上面go mod init gomod_test的模块名,mypackage是你的包目录
package main import (
"fmt"
"gomod_test/mypackage"
"github.com/name/foo"
) func main() {
foo.Foo()
mypackage.XXX()
}
情形三:引用本地包
这种情况的原因是:比方我们依赖了github.com/name/mylib这个库,但我们需要在纯内网无外网环境下编译,这时候go get不到github的代码,就需要我们用replace替换成本地包。
1、首先我需要把github.com/name/mylib代码下载下来,你可以直接下载zip,也可以clone,到工程根目录
2、编辑go.mod文件加入下面这一行(也可以用go mod edit命令编辑,更正统一些)
replace github.com/name/mylib=> ./mylib
要确保 ./mylib跟你的下载代码的目录一致
目录结构如下
gomod_test
|-----main.go
|-----mypackage
|---------mypackage.go
|-----mylib
|---------mylib.go
main.go 改成如下
package main import (
"fmt"
"gomod_test/mypackage"
"github.com/name/mylib"
"github.com/name/foo"
) func main() {
foo.Foo()
mypackage.XXX()
mylib.DoXXX()
}
其他
1、如果想把将依赖复制到vendor下可以用go mod vendor命令
2、如果想用vendor里的依赖库编译可执行文件可以用命令 go build -mod=vendor
[Golang] go modules使用的更多相关文章
- 在go modules中使用replace替换无法直接获取的package(golang.org/x/...)
上一篇里我们介绍了使用go get进行包管理. 不过因为某些未知原因,并不是所有的包都能直接用go get获取到,这时我们就需要使用go modules的replace功能了.(当然大部分问题挂个梯子 ...
- golang包管理解决之道——go modules初探
golang的包管理是一直是为人诟病之处,从golang1.5引入的vendor机制,到准官方工具dep,目前为止还没一个简便的解决方案. 不过现在go modules随着golang1.11的发布而 ...
- Golang(八)go modules 学习
0. 前言 最近加入鹅厂学习 k8s,组内使用 Go 1.11 以上的 go modules 管理依赖,因此整理了相关资料 本文严重参考原文:初窥Go module 1. 传统 Golang 包依赖管 ...
- Golang modules包依赖管理工具
初始化 执行go mod init module-name,其中module-name为包名字,执行完后会生成go.mod文件,如下 module module-name go 1.13 包管理 使 ...
- Golang、Php、Python、Java基于Thrift0.9.1实现跨语言调用
目录: 一.什么是Thrift? 1) Thrift内部框架一瞥 2) 支持的数据传输格式.数据传输方式和服务模型 3) Thrift IDL 二.Thrift的官方网站在哪里? 三.在哪里下载?需要 ...
- IntelliJ Idea 14 安装 Golang 插件 google-go-lang-idea-plugin 的方法
IDEA 的编辑器都很强悍,所以现在学Go 也想用他啊,无奈这个插件搞了好久,整理了下流程记录下 1. 当然是下载 IDEA 编辑器了 http://www.jetbrains.com/idea/do ...
- golang实现aes-cbc-256加密解密过程记录
我为什么吃撑了要实现go的aes-cbc-256加密解密功能? 之前的项目是用php实现的,现在准备用go重构,需要用到这个功能,这么常用的功能上网一搜一大把现成例子,于是基于go现有api分分钟实现 ...
- 一键解决 go get golang.org/x 包失败
问题描述 当我们使用 go get.go install.go mod 等命令时,会自动下载相应的包或依赖包.但由于众所周知的原因,类似于 golang.org/x/... 的包会出现下载失败的情况. ...
- 再探go modules:使用与细节
还有半个月go1.12就要发布了.这是首个将go modules纳入正式支持的稳定版本. 距离go modules随着go1.11正式面向广大开发者进行体验也已经过去了半年,这段时间go module ...
随机推荐
- httprunner学习2-har2case录制生成脚本
前言 复制毁一生,录制穷三代,如果你只是因为不想写脚本,而去录制脚本,那我建议你还是别学录制了. 录制脚本,只是一个过渡,从0到1的一个过渡,如果让你直接写脚本,你会无从下手,可以将录制的脚本快速转化 ...
- 26、pathlib文件系统模块(了解)
一.pathlib库官方定义 pathlib 是Python内置库,Python 文档给它的定义是 Object-oriented filesystem paths(面向对象的文件系统路径).path ...
- MapReduce如何调优
Map阶段优化 1.在代码书写时优化,如尽量避免在map端创建变量等,因为map端是循环调用的,创建变量会增加内存的消耗,尽量将创建变量放到setup方法中 2.配置调优,可以在集群配置和任务运行时进 ...
- 2019牛客国庆集训派对day3 买一送一
题目链接: 题意:有n个点,n-1条单向边,每个点都销售一类商品 问从点1开始走,买第一样商品类型为x,买第二样商品类型为y,问不同有序对<x,y>的数量 解法: col[i]表示这个点的 ...
- 08_MSTP(数通华为)
1. 网络拓扑 2. SW1配置[SW1]vlan batch 10 20 30 40[SW1]stp mode mstp 进入MSTP配置视图,MSTP域名为huawei,同时配置VLAN到实例的映 ...
- bzoj 3992: [SDOI2015]序列统计 NTT+原根
今天开始学习丧心病狂的多项式qaq...... . code: #include <bits/stdc++.h> #define ll long long #define setIO ...
- BZOJ 4411: [Usaco2016 Feb]Load balancing 线段树+二分
code: #include <bits/stdc++.h> #define N 100060 #define M 1000000 #define lson x<<1 #def ...
- NodeJS基础学习总结
一.nodeJS解释 JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器. 每一种解析器都是 ...
- Javascript总结(全)
说明 个人感觉总结得很好忍不住要分享,转载自github地址,作者博客原文发现打不开,于是复制粘贴到此处,如有侵权,请联系本人删除. Type class TypeFn { isString (o) ...
- 欧拉法求解常微分方程(c++)
#include<iostream> #include<iomanip> using namespace std; int main() { double x, y, h; ...