安装

配置环境

启用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的一些内容的更多相关文章

  1. 再探go modules:使用与细节

    还有半个月go1.12就要发布了.这是首个将go modules纳入正式支持的稳定版本. 距离go modules随着go1.11正式面向广大开发者进行体验也已经过去了半年,这段时间go module ...

  2. Linux课程实践二:编译模块实现内核数据操控

    一.内核模块原理 1. Linux内核增加功能 Linux内核整体结构很庞大,包含了很多的组件,现在有两种方法将需要的功能包含进内核当中: - 静态加载:将所有的功能都编译进Linux内核. - 动态 ...

  3. ubuntu多网卡绑定

    这是最近碰到这个问题,需要将两张网卡绑定,共用一个IP,实现冗余效果.实际上linux双网卡的绑定模式有7中,而在这里常用的是 active-backup linux有七种网卡绑定模式:0. roun ...

  4. linux网卡速率和双工模式的配置

    linux网卡速率和双工模式的配置 (2012-09-06 14:39:57) 转载▼ 标签: 科技 网络接口 协商 网卡 工具 it 分类: Linux 改变网络接口的速度和协商方式的工具miito ...

  5. 第二十章、启动流程、模块管理与 Loader

    核心与核心模块 在整个启动的过程当中,是否能够成功地驱动我们主机的硬件配备, 是核心 (kernel) 的工作!而核心一般都是压缩档,因此在使用核心之前,就得要将它解压缩后, 才能加载主内存当中. 另 ...

  6. 在vmware 6.5+ubuntu12.04上安装VMware tools出现问题的分析

    笔者已经写了一篇关于安装"VMware Tools",以实现文件共享的文章,那篇文章对于你实现共享操作是足够了, 所以,倘若你赶时间不如直接去在虚拟机的linux中利用VMware ...

  7. 鸟哥的linux私房菜——第20章 启动流程、模块管理与loader

    20.1 Linux启动流程分析 Linux启动过程: 按下开机电源后计算机硬件主动读取BIOS来加载硬件信息以及硬件系统的自我测试,之后系统会主动读取第一个可启动的设备(由BIOS设置),此时就可以 ...

  8. 内核与内核模块:depmod,lsmod,modinfo,insmod,rmmod,mdprobe

                  内核模块:/lib/modules/version/kernel或/lib/modules/$(uname -r)/kernel; [root@localhost kern ...

  9. 【转】Android Hook框架Xposed详解

    1 Introduction 1.1  概述 Xposed 是 GitHUB 上 rovo89 大大设计的一个针对 Android 平台的动态劫持项目,通过替换 /system/bin/app_pro ...

随机推荐

  1. APP排查内存泄漏最简单和直观的方法

        内存泄漏无疑会严重影响用户体验,一些本应该废弃的资源和对象无法被释放,导致手机内存的浪费,app使用的卡顿,那么如何排查内存泄漏呢? 当然,首先我们有google的官方文档可以参考,大部分博客 ...

  2. app--Android 稳定性测试方案

    标准的崩溃日志:Android 应用一般使用 Java 语言开发,在不作特殊处理的情况下,遇到未处理的异常时,会弹框提示“程序遇到异常,即将退出”(有些手机框中提示语不同, 或不弹框).同时会将异常的 ...

  3. http响应时长分析

    curl -o /dev/null -s -w "time_namelookup:%{time_namelookup}::time_connect:%{time_connect}::time ...

  4. mysql 事物控制语言

    事务控制语言(DTL)    什么是事务        通常,在此之前,我们说,一条语句使用一个分号(;)来结束,并得到执行.        那么我们说,这个“一次性执行”的过程,可以称为“一个事务” ...

  5. spark源码阅读 RDDs

    RDDs弹性分布式数据集 spark就是实现了RDDs编程模型的集群计算平台.有很多RDDs的介绍,这里就不仔细说了,这儿主要看源码. abstract class RDD[T: ClassTag]( ...

  6. Dockerfile指令的使用

    关于Dockerfile Dockerfile实际上就是一系列创建Docker镜像的脚本, 虽然可以通过命令行来执行, 但是那样繁琐而且容易出错. Dockerfile指令 FROM 他的意思是在创建 ...

  7. varnish缓存清理

    本篇日志应该较早该去写的,一直脱了好久,直到最近才写.在使用任务cache工具时,都会提到的一个问题.如何只清理想清理的那部分缓存,而其已缓存的部分不受影响 .这里就要用到varnishadm工具,先 ...

  8. golang开发:环境篇(四)包管理器 glide的使用

    glide 是golang项目开发中是特别重要的软件,没有它,golang的项目可能都无法发布. 为什么要使用glide 平时我们开发Go项目的时候,使用第三方的包的时候都直接使用go get 去获取 ...

  9. 使用dockers安装MySQL

    事前准备 关闭selinux setenforce 0 vim /etc/sysconfig/selinux SELINUX=disabled # 若不关闭,使用docker启动mysql5.7镜像容 ...

  10. MySQL 体系结构及存储引擎

    MySQL 原理篇 MySQL 索引机制 MySQL 体系结构及存储引擎 MySQL 语句执行过程详解 MySQL 执行计划详解 MySQL InnoDB 缓冲池 MySQL InnoDB 事务 My ...