目录

一、如何使用go mod

二、golang开启mod后import报红解决

三、go mod 怎么导入本地其它项目的包?

四、完整代码


一、如何使用go mod

下面的函数中使用了iris,所以我们需要先使用go mod下载相关依赖,直接使用go get命令太慢了,还可能被墙~~

【此时项目可以放在任意位置,不必非要放在GOPATH目录下】

  • test.go
package mainimport (iris "github.com/kataras/iris/v12"
)func main() {app := iris.New()app.Get("/", func(ctx iris.Context) {ctx.HTML("<h1>Hello World!</h1>")})app.Run(iris.Addr(":8080"))
}

1、打开CMD命令提示框,设置临时环境变量

  • set GO111MODULE=on
  • set GOPROXY=https://goproxy.io

注意 https://goproxy.io 也可替换成阿里云的 https://mirrors.aliyun.com/goproxy

2、再次执行 go get github.com/kataras/iris 也可以加 -v -u ,如下

  • go get -u github.com/kataras/iris/v12@latest

这时候就把所有的依赖都下载下来了。

值得注意的是,这些包并没有下载到 GOPATH/src 目录下,而是在 GOPATH/pkg/mod 目录中。

3、使用初始化生成go.mod 文件

  • go mod init  初始化生成go.mod文件

4、添加依赖运行

  • 执行 go run test.go 运行代码会发现 go mod 会自动查找依赖自动下载

5、再次运行主函数

go run test.go ,访问http://localhost:8080/:

go mod更加详细的使用可参考我的另一篇博客:

  • go下载安装使用web框架iris + go mod使用:https://blog.csdn.net/qq_38151401/article/details/105739028

二、golang开启mod后import报红解决

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

如下所示:

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

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

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

三、go mod 怎么导入本地其它项目的包?

通过上图中的引入依赖可以清晰地看到,我们启用go mod后,很明显的由GOPATH路径变成了go mod路径

也就是说,之前的基于GOPATH的路径访问方式不管用了,并且go mod不支持相对路径的引入方式,这个时候如果要引入其他模块,怎么做呢?

GOPATH和GOROOT更加详细的理解可参考我的另一篇博客:

  • 彻底搞懂golang的GOROOT和GOPATH:https://blog.csdn.net/qq_38151401/article/details/105729884

项目结构如下所示,需要在modelDemo模块中引入model模块

hellodemo.go是应用的入口,main 所在位置,而model可以理解为你写的一个公共的库,其中提供了一个函数 Hello()。现在,要在 hellodemo.go中调用 model中的 Hello() 函数。传统的方式是基于GOPATH或者相对路径的方式,但go mod均不支持,那如何解决呢?

1、model模块中的 go.mod 内容如下:

(在model目录下运行go mod init生成go.mod文件)

2、model模块中的mymodel.go 内容如下:

3、modelDemo模块中的 go.mod 内容如下:

(在modeldemo目录下运行go mod init生成go.mod文件)

go.mod 提供了modulerequirereplaceexclude 四个命令

  • module 语句指定包的名字(路径)
  • require 语句指定的依赖项模块
  • replace 语句可以替换依赖项模块
  • exclude 语句可以忽略依赖项模块

现需要引入model模块

此处的 replac稍微介绍下,之所以要是 github.com/model 的格式,是因为在 go1.13 中, go module 名称规范要求路径的第一部分必须满足域名规范,否则可能汇报类似 malformed module path "model": missing dot in first path element 这样的错误。当然,在 go1.12 不会有报这个错误。建议的话,如果是公司内部使用,可以替换成公司内部域名。

引入上面的replace内容侯,再次运行hellodemo.go,就会自动生成上面的require内容

replace 的第二个参数指定了不从远程获取,而是本地某个路径下的模块替换 github.com/model

4、hellodemo.go内容如下:

此时,执行 go run hellodemo.go 是可以成功运行的。

四、完整代码

1、model -> mymodel.go

package modelfunc Hello() string {return "Hello"
}

2、model -> go.mod

module Demo/modelgo 1.14

3、helloDemo -> hellodemo.go

package mainimport ("fmt""github.com/model"
)func main()  {fmt.Println("Hello")fmt.Println(model.Hello())
}

4、helloDemo -> go.mod

module Demo/modelDemogo 1.14require github.com/model v0.0.0-00010101000000-000000000000 // indirectreplace github.com/model => ../model

参考文章:

  • golang开启mod后import报红解决:https://zhuanlan.zhihu.com/p/93508676
  • Go Module 引入本地自定义包:http://www.r9it.com/20190611/go-mod-use-dev-package.html
  • go mod 怎么导入本地其它项目的包?:https://segmentfault.com/q/1010000020696591

一文彻底搞懂go mod使用相关推荐

  1. layer output 激活函数_一文彻底搞懂BP算法:原理推导+数据演示+项目实战(下篇)...

    在"一文彻底搞懂BP算法:原理推导+数据演示+项目实战(上篇)"中我们详细介绍了BP算法的原理和推导过程,并且用实际的数据进行了计算演练.在下篇中,我们将自己实现BP算法(不使用第 ...

  2. 一文彻底搞懂前端监控 等推荐

    大家好,我是若川.话不多说,这一次花了几个小时精心为大家挑选了20余篇好文,供大家阅读学习.本文阅读技巧,先粗看标题,感兴趣可以都关注一波,一起共同进步. 前端点线面 前端点线面 百度前端研发工程师, ...

  3. opc服务器是硬件吗,opc是什么(一文彻底搞懂什么是OPC)

    原标题:(opc是什么(一文彻底搞懂什么是OPC)) opc是什么(一文完全搞懂什么是OPC)从2000年终以来,我们就一直在运用OPC软件互操纵性范例,而那些正准备踏入和想要踏入工业自动化范畴的人们 ...

  4. 一文彻底搞懂BP算法:原理推导+数据演示+项目实战(下篇)

    在"一文彻底搞懂BP算法:原理推导+数据演示+项目实战(上篇)"中我们详细介绍了BP算法的原理和推导过程,并且用实际的数据进行了计算演练.在下篇中,我们将自己实现BP算法(不使用第 ...

  5. 一文彻底搞懂Mybatis系列(十六)之MyBatis集成EhCache

    MyBatis集成EhCache 一.MyBatis集成EhCache 1.引入mybatis整合ehcache的依赖 2.类根路径下新建ehcache.xml,并配置 3.POJO类 Clazz 4 ...

  6. 一文彻底搞懂ROC曲线与AUC的概念

    一文彻底搞懂ROC曲线与AUC的概念 1. ROC曲线的初级含义 1.1 精确率和召回率 1.2 ROC曲线的含义 2. ROC曲线如何绘制 3. ROC曲线和排序有什么关联? 4. AUC和基尼系数 ...

  7. 一文快速搞懂Kudu到底是什么

    文章目录 引言 文章传送门: Kudu 介绍 背景介绍 新的硬件设备 Kudu 是什么 Kudu 应用场景 Kudu 架构 数据模型 分区策略 列式存储 整体架构 Kudu Client 交互 Kud ...

  8. 一文快速搞懂对95%置信区间的理解

    一文快速搞懂对95%置信区间的理解 综合知乎上各大神的解答和网络资料得到本文对95%置信区间的理解 先给出结论 最常出现的对置信区间的错误理解: 在95%置信区间内,有95%的概率包括真实参数  (错 ...

  9. 奇舞周刊第 440 期:一文彻底搞懂前端沙箱

    记得点击文章末尾的" 阅读原文 "查看哟~ 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■ 一文彻底搞懂前端沙箱‍ 沙箱是一种安全机制,为运行中‍的程序提供隔离环境.通常 ...

最新文章

  1. 一个搜索需求搞垮微服务
  2. [动态库]动态库生成和使用以及Makefile编写
  3. 域滤波:方框、高斯、中值、双边滤波
  4. Hadoop hdfs 获取文件列表代码示例
  5. 海思芯片硬件java加速_海思Hi3719C V100芯片简介
  6. 多线程并发如何高效实现生产者/消费者?
  7. flyway配置mysql_Flyway快速上手教程
  8. 自定义WPF ListBox的选择样式
  9. 解决导出CSV后在EXCEL打开纯数字前面0丢失问题
  10. SpringBoot与缓存使用及原理(下)
  11. wifipumpkin3 WiFi钓鱼工具
  12. 自己的阿里云镜像加速器查找
  13. 海康大华宇视硬件NVR通过GB28181注册接入到LiveGBS国标流媒体服务后通道显示为0如何处理
  14. word模板动态填充并下载
  15. 高分一号WFV影像云检测工具(免费)
  16. vue3中 v-md-editor 编辑器的基本使用分享
  17. Dynamics 365 IFD设置反向代理后无法跳转登录页的解决方法
  18. python“~”符号的用法
  19. C语言判断第几天(最简版)
  20. 程序员想兼职赚钱?这几个渠道你一定要知道?

热门文章

  1. 2022.9.15 第1次周报
  2. Diazo Biotin-PEG3-DBCO,二苯并环辛炔PEG3重氮生物素,无铜 Click Chemistry
  3. 怎么样才能让自己自律起来_怎样让懒惰的人自律起来?
  4. JVM学习笔记之四 四种引用和垃圾回收的两次标记
  5. win10无法识别linux硬盘,win10硬盘不能识别怎么办_win10硬盘不能识别解决办法_飞翔教程...
  6. 【经验分享】打通“任督”二脉——企业数字化转型中如何构建DevOps能力体系?
  7. mangos--e品魔兽世界,一个纪念集!
  8. 曾经vb,c ,c++,python,写过的杨辉三角,致敬杨老前辈
  9. 基石为勤能补拙的迷宫之旅——第十六天(包)
  10. windows 7计算机用户,win7系统打开超级账户的两种方法(图文)