[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 ...
随机推荐
- SpringBoot项目的测试类
1. package soundsystem; import static org.junit.Assert.*; import org.junit.Test; import org.junit.ru ...
- keil编译器从ac5迁移到ac6
今天在安富莱的论坛上ac6的使用方法,所以,就小试牛刀玩了玩,终于ok了.使用keil5.25+stm32+hal库,5.23开始才支持ac6,因此keil版本不能太低. 可以参考:https://b ...
- swift修饰符
Declaration Modifiers Declaration modifiers are keywords or context-sensitive keywords that modify t ...
- 学习:多字节编码(ANSI)和UNICODE编码的关系
Windows 既可以使用 Unicode 字符集又可以使用传统的字符集(如多字节编码)来实现对多种语言的支持,以适应国际市场的要求.与传统的字符集编码相比,Unicode 是世界通用的字符编码标准, ...
- 二叉堆的构建(Java)
package com.rao.linkList; /** * @author Srao * @className BinaryHeap * @date 2019/12/3 14:14 * @pack ...
- Insecure Code Management
Insecure Code Management-------------不安全的代码管理 Get the password (in clear text) from the admin accoun ...
- 开发(二) ardunio批量固件上传地址
https://blog.csdn.net/Naisu_kun/article/details/84958561 批量烧录固件到模块中上面讲了如何编写上传程序,接下来讲讲如何量产.相比<Ardu ...
- Lexicographical Substring Search SPOJ - SUBLEX (后缀自动机)
Lexicographical Substrings Search \[ Time Limit: 149 ms \quad Memory Limit: 1572864 kB \] 题意 给出一个字符串 ...
- Numpy | 10 广播(Broadcast)
广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行. 下面的图片展示了数组 b 如何通过广播来与数组 a 兼容. 4x ...
- Hibernate的批量查询——HQL
HQL(Hibernate Query Language)查询: 1.查询所有学生信息: public static void testSel() { Session session = Hibern ...