关于Go Modules的一些内容
安装
配置环境
启用Go Modules
go mod在Go >= 1.13才默认启用,在Go >= 1.11已经开始支持了go mod。
设置环境变量
# 启用go module
export GO111MODULE=on
# 设置GOPATH,开启go mod之后,这个目录主要用来存放依赖包
export GOPATH=~/go_modules
# 设置go代理,在运行go test/build等时会自动下载依赖
# 使用go get下载依赖需要在GOPATH中执行才会使用代理
export GOPROXY=https://goproxy.io
go mod使用
在$GOPATH/src之外的任意目录创建一个目录,
mkdir -p /home/gopher/project
cd /home/gopher/project
这个目录就是你项目的根目录,在目录中创建mod管理文件
go mod init project
如果你这个项目是放在github上的,那么在创建文件的时候可以这样写,project为你github项目名称
go mod init github.com/YourName/project
go.mod的初始内容cat go.mod为:
module project
go 1.12
go.mod只需要在项目的根目录创建一次即可,在项目中Go会自动查找当前目录的全部父级目录,直到找到go.mod。
关于包的定义和自定义包的导入
一个目录下只能由一个定义的package
比如在project项目中有了一个hello.go的文件,文中定义了package hello,
这样,当你再在project中创建了一个world.go的文件,其中定义了package world会报错,无法加载package
每个package定义,位于一个目录中。推荐目录名和package定义的包名字相同。
project
├── go.mod
├── hello
│ ├── hello.go
│ └── hello1.go
├── main.go
└── world
├── world.go
└── world1.go 其中hello目录中所有文件的包定义均为package hello,hello目录中所有文件的包定义均为package world
go mod管理
创建新的模块
# 创建了一个新的模块,初始化 `go.mod` 文件并且生成相应的描述
go mod init
添加依赖项
# build,test和其它构建代码包的命令,会在需要的时候在go.mod文件中添加新的依赖项
# 最好不要自己修改go.mod文件,因为在Go在向go.mod中添加依赖项的时候
# 同时会向go.sum中的hash对比,确定依赖是否修改。
go build
go test
查看当前全部依赖项
# 列出了当前模块所有的依赖项
go list -m all
修改指定依赖项的版本(或添加一个新的依赖项)
# 修改或添加
# go get -u 会更新依赖
# 获取指定版本的形式 go get rsc.io/sampler@v1.3.1
go get
移除无用的依赖项
go mod tidy
关于Go Modules的一些内容的更多相关文章
- 再探go modules:使用与细节
还有半个月go1.12就要发布了.这是首个将go modules纳入正式支持的稳定版本. 距离go modules随着go1.11正式面向广大开发者进行体验也已经过去了半年,这段时间go module ...
- Linux课程实践二:编译模块实现内核数据操控
一.内核模块原理 1. Linux内核增加功能 Linux内核整体结构很庞大,包含了很多的组件,现在有两种方法将需要的功能包含进内核当中: - 静态加载:将所有的功能都编译进Linux内核. - 动态 ...
- ubuntu多网卡绑定
这是最近碰到这个问题,需要将两张网卡绑定,共用一个IP,实现冗余效果.实际上linux双网卡的绑定模式有7中,而在这里常用的是 active-backup linux有七种网卡绑定模式:0. roun ...
- linux网卡速率和双工模式的配置
linux网卡速率和双工模式的配置 (2012-09-06 14:39:57) 转载▼ 标签: 科技 网络接口 协商 网卡 工具 it 分类: Linux 改变网络接口的速度和协商方式的工具miito ...
- 第二十章、启动流程、模块管理与 Loader
核心与核心模块 在整个启动的过程当中,是否能够成功地驱动我们主机的硬件配备, 是核心 (kernel) 的工作!而核心一般都是压缩档,因此在使用核心之前,就得要将它解压缩后, 才能加载主内存当中. 另 ...
- 在vmware 6.5+ubuntu12.04上安装VMware tools出现问题的分析
笔者已经写了一篇关于安装"VMware Tools",以实现文件共享的文章,那篇文章对于你实现共享操作是足够了, 所以,倘若你赶时间不如直接去在虚拟机的linux中利用VMware ...
- 鸟哥的linux私房菜——第20章 启动流程、模块管理与loader
20.1 Linux启动流程分析 Linux启动过程: 按下开机电源后计算机硬件主动读取BIOS来加载硬件信息以及硬件系统的自我测试,之后系统会主动读取第一个可启动的设备(由BIOS设置),此时就可以 ...
- 内核与内核模块:depmod,lsmod,modinfo,insmod,rmmod,mdprobe
内核模块:/lib/modules/version/kernel或/lib/modules/$(uname -r)/kernel; [root@localhost kern ...
- 【转】Android Hook框架Xposed详解
1 Introduction 1.1 概述 Xposed 是 GitHUB 上 rovo89 大大设计的一个针对 Android 平台的动态劫持项目,通过替换 /system/bin/app_pro ...
随机推荐
- docker里安装kali linux
docker里安装kali linux 官网镜像 docker search kali docker pull kalilinux/kali-linux-docker vi /etc/apt/sour ...
- jstat介绍
命令可用选项 ➜ ~ jstat -options -class -compiler -gc -gccapacity -gccause -gcmetacapacity -gcnew -gcnewcap ...
- Meerkat软件
一.准备工作 meerkat 0.189版本和以前的版本相比,支持bwa mem 输出的bam文件,还支持全外显子数据count SV. meerkat原理 1.1 需要准备的软件 unix/Linu ...
- 【转帖】IP地址总数
http://blog.sina.com.cn/s/blog_ac1d70a40102xn8z.html 计算规则挺有意思的 私有IP地址段: A类:10.0.0.0到10.255.255.255 1 ...
- [转帖]上云测试,这些关键点你get 到没有
上云测试,这些关键点你get 到没有 https://www.cnblogs.com/mypm/p/10852656.html?tdsourcetag=s_pcqq_aiomsg sticky 还有s ...
- 题解 CF1216C 【White Sheet】
虽然也很水,但这道还是比前两道难多了... 题目大意:给你三个位于同一平面直角坐标系的矩形,询问你后两个是否完全覆盖了前一个 首先,最直观的想法应该是,把第一个矩形内部每个整数点检查一下,看看是否位于 ...
- 关于使用 symfony 3.4.32中Luckynumber 页面的 route 书写
关于symfony 3.4.32的安装与配置及第一个页面Luckynumber 的route书写 1.symfony 的安装与配置 symfony官网文档:https://symfony.com/do ...
- C++11<functional>深度剖析:背景、原理、接口与实现
自C++11以来,C++标准每3年修订一次.C++14/17都可以说是更完整的C++11:即将到来的C++20也已经特性完整了. C++11已经有好几年了,它的年龄比我接触C++的时间要长10倍不止吧 ...
- vue项目过程的理解: main.js文件理解 router.js文件理解 以及组件 路由 等之间的关系
https://blog.csdn.net/qq_26229005/article/details/85040393 内容太多了,有空再整理
- Itemchanged事件
Itemchanged事件:当数据窗口控件中某个域被修改并且该域失去输入焦点该事件返回的意义为: 0--(缺省返回值),接收新修改的值: 1--不接收新修改的值且不允许改变输入焦点: 2--不接收新修 ...