Golang必知必会之Go Mod命令详解

目录
  • 一、go mod 是什么?
  • 二、详细命令
    • 1. init
    • 2.download
    • 3.tidy
    • 4.graph
    • 5.edit
    • 5.vendor
    • 5.verify
    • 5.why
  • 补充:golang开启mod后import报红解决
  • 总结

一、go mod 是什么?

go modules 官方定义为:

模块是相关Go包的集合。modules是源代码交换和版本控制的单元。
go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。

二、详细命令

1. init

代码:

go mod init

生成 go.mod 文件,此命令会在当前目录中初始化和创建一个新的go.mod文件,手动创建go.mod文件再包含一些module声明也等同该命令,而go mod init命令便是帮我们简便操作,可以帮助我们自动创建。

2.download

代码:

go mod download

下载 go.mod 文件中指明的所有依赖,使用此命令来下载指定的模块,模块的格式可以根据主模块依赖的形式或者path@version形式指定。

3.tidy

代码:

go mod tidy

整理现有的依赖,使用此命令来下载指定的模块,并删除已经不用的模块

4.graph

代码:

go mod graph

查看现有的依赖结构,生成项目所有依赖的报告,但可读性太差,图形化更方便。

5.edit

代码:

go mod edit

编辑 go.mod 文件,之后通过 download 或 edit 进行下载

5.vendor

代码:

go mod vendor

导出项目所有的依赖到vendor目录,从mod中拷贝到项目的vendor目录下,IDE可以识别这样的目录。

5.verify

代码:

go mod verify

校验一个模块是否被篡改过,查询某个常见的模块出错是否已被篡改

5.why

代码:

go mod why

查看为什么需要依赖某模块,查询某个不常见的模块是否是哪个模块的引用

补充:golang开启mod后import报红解决

在golang中,开启mod模式后,import包变红,但是程序可以正常运行

如下所示:

猜测是索引路径出了问题,当前项目的依赖路径如下,可以看到只有sdk和GOPATH,没有go mod模块

新建go项目,然后老老实实的go mod init [项目名],然后go build拉包,一切正常,这时,在setting里再启用go mod勾选上

然后,奇迹出现了,我们的依赖中,多了一个go mod路径,这时原来报红的import路径消失了!!!

总结

通过以上可以轻松了解在Golang中go mod的使用方式。Go mod提供了一系列操作modules的命令,所有的go命令中现在已经内置了对module的支持,而不仅仅是go mod命令。例如使用go get时,会经常自动在后台添加、移除、升级、降级依赖包版本。

到此这篇关于Golang必知必会之Go Mod命令详解的文章就介绍到这了,更多相关Golang Go Mod命令内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 解决go mod私有仓库拉取的问题

    用go mod的时候应该会遇到无法拉取私有仓库的问题 从你gitlab平台生成一个token,在~/.gitcoinfig中 [http]下增加extraheader = PRIVATE-TOKEN: 你的token [url]下增加 insteadOf = https://gitlab.你的gitlab服务器.com 如果还不生效则增加环境变量后尝试: export GOPRIVATE=gitlab.你的gitlab服务器.cn 补充:go module 引用码云(或其他私有仓库)的配置 go

  • 详解go mod 使用方法

    目录 1.进入grammar文件夹 2.初始化目录 3.导入自定义的模块 4.导入本地没有的模块 常用命令 1.初始化模块 2 .获取远程的模块 3. 查看当前依赖模块 4.清除未使用到的依赖 go modules 是 golang 1.11 新加的特性.现在1.12 已经发布了,是时候用起来了.Modules官方定义为: 模块是相关Go包的集合.modules是源代码交换和版本控制的单元. go命令直接支持使用modules,包括记录和解析对其他模块的依赖性.modules替换旧的基于GOPA

  • go mod 使用旧版本 版本号指定方式

    在使用go mod的过程中,发现不容易指定版本号 尤其是没有打tag的,不知道怎么指定版本号, 不知道有哪版本号 正常使用都没有问题,但是当引用的项目用了旧的代码, 这时候必须使用旧的版本,无法指定版本,不知道如何入手 尤其是k8s.io不知道是什么鬼, 从哪里看它的代码,只知道github.com 这个时候在 go.mod文件中 require 里面加上 github.com/kubernetes/cloud-provider 2bf8e45 此时会自动生成版本号, 其中 2bf8e45 这个

  • go mod的使用方法小结

    目录 前言 1.go modules的基本介绍 1.1 提供的命令 1.2 提供的环境变量 1.2.1 说明 2.go modules的基本使用 2.1 初始化项目 3.使用go mod发布自己的包 3.1 发布公开的包 3.2 发布私有包 前言 对于多个项目来说,把所有的源码都放在GOPATH下的src目录下非常的不方便.golang给我们提供了一个叫go mod的命令来脱离src目录,方便我们管理go项目.go mod 是go官方提供的go版本管理的一个方案,目前1.15已经可用于生产环境.

  • Golang必知必会之Go Mod命令详解

    目录 一.go mod 是什么? 二.详细命令 1. init 2.download 3.tidy 4.graph 5.edit 5.vendor 5.verify 5.why 补充:golang开启mod后import报红解决 总结 一.go mod 是什么? go modules 官方定义为: 模块是相关Go包的集合.modules是源代码交换和版本控制的单元.go命令直接支持使用modules,包括记录和解析对其他模块的依赖性.modules替换旧的基于GOPATH的方法来指定在给定构建中

  • MySQl数据库必知必会sql语句(加强版)

    这一篇属于加强版,问题和sql语句如下. 创建users表,设置id,name,gender,sal字段,其中id为主键 drop table if exists users; create table if not exists users( id int(5) primary key auto_increment, name varchar(10) unique not null, gender varchar(1) not null, sal int(5) not null ); inse

  • MYSQL必知必会读书笔记第十和十一章之使用函数处理数据

     mysql简介 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理. 拼接字段 存储在数据库表中的数据一般不是应用程序所需要的格式.我们需要直接从数据库中检索出转换.计算或格式化过的数据:而不是检索出数据,然后再在客户机应用程序或报告程序中重新格式化. 计算字段(字段 = 列,不过数据库列一般称为列,而字段通常用于计算字段中)并不实际存在于数据库表中,计算字段是运行时在select语句内创建的

  • JavaScript必知必会(七)js对象继承

    对象继承inherit var o = { r: }; var c = function f() { }; c.prototype = o; c.r = ; alert(o.r);//被继承的属性值未发生改变.alert(c.r);//c中r覆盖了o中的属性. 如何调用o中的r属性呢. var o = { r: }; var c = function f() { }; c.prototype = o; alert(o.r);// 被继承的属性值未发生改变. alert(c.r);//查询r属性,

  • JavaScript必知必会(十) call apply bind的用法说明

    call 每个func 都会继承call apply等方法. function print(mesage) { console.log(mesage); return mesage; } print.call(this, "cnblogs");//cnblogs call(thisAgr,agr1,agr2...) ,call方法第一个传递一个context上下文.后面是参数的个数. apply apply(thisAgr,[agr1,agr2]),apply方法和call的用法一样,

  • JavaScript必知必会(三) String .的方法来自何方

    String 我们知道javascript 包括:number,string,boolean,null,undefined 基本类型和Object 类型. 在我的认知中,方法属性应该是对象才可以具有的. var str="hello,world"; var s=str.subString(,);//ell alert(typeof(str)+":"+typeof(s));//string:string 从上面的返回类型来看,str是string 类型的. 再看下面的

  • JavaScript必知必会(六) delete in instanceof

    in in 判断 左边 的字符串或者能转换成字符串的是否属于 右边 的属性. var data = { x: , y: };//定义了直接对象 alert("x" in data);//true ,x 是data 的一个属性 alert( in data);//false , 是data的属性值. var arr = [, , ];//定义了直接数组对象 alert( in arr);//true ,arr 数组的index包括,,, 是他的一个[]属性. alert( in arr)

  • JavaScript必知必会(五) eval 的使用

    eval eval(parse) parse :里面跟参数字符串,我们知道执行javascript 会编译执行, 改变全局变量的值: var x = ; //定义的全局变量 alert(x);// var g = eval("x="); //eval 会根据当前上下文解析x alert(x);// 在全局作用域引用eval,改变全局作用域的值,不改变局部作用域的值 var g = eval; //全局引用eval var x = "global";//定义全局变量

  • MYSQL必知必会读书笔记第六章之过滤数据

    mysql简介 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理. where子句的位置,在同时使用ORDER BY 和WHERE子句时应该让ORDER BY 位于where之后,否则会产生错误. 1.不匹配检查 复制代码 代码如下: SELECT vend_id FROM products where vend_id <>1003 等同于 复制代码 代码如下: SELECT vend_id

  • MYSQL必知必会读书笔记第三章之显示数据库

    MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理. show column from tablename: 对每一个字段返回一行,行中包含字段名,数据类型.是否允许NULL.键信息.默认值以及其他信息. describe 语句: MySQL支持使用describ作为show columns from 的一种快捷方式.describ tablename 所支持的其他的show语句: show s

随机推荐