注意事项

所谓的远程仓库指的是github,个人首次使用go mod在其他云仓库上尝试,并未成功,这浪费了我近2小时的时间;

如果你是初次尝试,那么除了github的地址换一下之外,其他的都按照示例操作,比如目录的创建,这也是我把我的操作步骤一个不拉地贴出来的原因,你只须按着做,必定成功;

如果你没有引用github上的go模块,也不打算分享代码到github,那么go mod对你没有任何作用,使用GOPATH即可。

在github上创建一个仓库

https://github.com/2haodb/gomng.git

把项目复制到本地,并提交一份代码上去

cd
git clone https://github.com/2haodb/gomng.git
cd gomng/
git remote add mng https://github.com/2haodb/gomng.git
cp -r /opt/dev/test/src/mod_test/ .
git add .
git commit -m "1.0.1"
git push -u mng master

代码内容

别人向你提到使用GO展示一个东西时,一定要用到GO的一些特性,尤其是面试官让你用GO写一段代码的时侯

root@black:~/gomng/mod_test/main# cd ..
root@black:~/gomng/mod_test# ls
main  pkg1
root@black:~/gomng/mod_test# cd pkg1/
root@black:~/gomng/mod_test/pkg1# cat test.go
package pkg1
import("fmt""time"
)func Test(){c := make(chan struct{})go func(){fmt.Println("我要出去看看园子里的花还活着吗")time.Sleep(7*time.Second)c <- struct{}{}}()<- cfmt.Println("这花被别人拿走了,再也看不到它了")
}

root@black:~/gomng/mod_test/main# cat main.go
package main
import("github.com/2haodb/gomng/mod_test/pkg1"
)func main(){pkg1.Test()
}

执行go mod

# echo $GOPATH
/opt/code/gopath:/opt/dev/test

export GO111MODULE=on

cd ~/gomng/mod_test/pkg1/
rm -rf go.mod
go mod init github.com/2haodb/gomng/mod_test/pkg1

root@black:~/gomng/mod_test/main# go mod init github.com/2haodb/gomng/mod_test/main
go: creating new go.mod: module github.com/2haodb/gomng/mod_test/main
root@black:~/gomng/mod_test/main# ll
total 16
drwxr-xr-x 2 root root 4096 9月  12 18:03 ./
drwxr-xr-x 4 root root 4096 9月  12 17:24 ../
-rw------- 1 root root   54 9月  12 18:03 go.mod
-rw-r--r-- 1 root root   99 9月  12 17:31 main.go
root@black:~/gomng/mod_test/main# cat go.mod
module github.com/2haodb/gomng/mod_test/maingo 1.12

重点说明-版本号

在github有类似下面的话,就在页面上绿色的按钮,点击下载的位置的下面一行,其中这个4166d71就是go mod需要的版本号

Latest commit4166d7121 minutes ago

那么对应的require部分可以这么写

module github.com/2haodb/gomng/mod_test/mainrequire github.com/2haodb/gomng/mod_test/pkg1 4166d71
go 1.12

在运行程序之后会自动转化为下面的v版本

root@black:~/gomng/mod_test/main# cat go.mod 
module github.com/2haodb/gomng/mod_test/main

require github.com/2haodb/gomng/mod_test/pkg1 v0.0.0-20190912093654-4166d71402a6

go 1.12

运行示例

root@black:~/gomng/mod_test/main# go run main.go
go: finding github.com/2haodb/gomng/mod_test/pkg1 4166d71
我要出去看看园子里的花还活着吗
这花被别人拿走了,再也看不到它了
root@black:~/gomng/mod_test/main# go run main.go
我要出去看看园子里的花还活着吗
这花被别人拿走了,再也看不到它了

可以看到首次运行的结果与第二次不一样,这是因为首次运行时go把依赖的模块下载下来了;

mod自动下载代码位置

go mod方式运行代码时自动将依赖的模块下载到$GOPATH/pkg/mod目录下,后续运行直接引用mod下的模块;同时,不会再去$GOPATH/src目录下找了。

root@black:~# echo $GOPATH
/opt/code/gopath:/opt/dev/test
root@black:~# ll /opt/code/gopath/pkg/mod/github.com/2haodb/gomng/mod_test
total 12
drwxr-xr-x 3 root root 4096 9月  12 17:41  ./
drwxr-xr-x 3 root root 4096 9月  12 17:41  ../
dr-x------ 2 root root 4096 9月  12 17:41 'pkg1@v0.0.0-20190912093654-4166d71402a6'/

重新演示一下上面的流程-任意位置

root@black:/tmp# mkdir ccc
root@black:/tmp# cd ccc/
root@black:/tmp/ccc# vim main.go
root@black:/tmp/ccc# go mod init github.com/2haodb/gomng/mod_test/main
go: creating new go.mod: module github.com/2haodb/gomng/mod_test/main
root@black:/tmp/ccc# vim go.mod root@black:/tmp/ccc# go run main.go
go: finding github.com/2haodb/gomng/mod_test/pkg1 4166d71
我要出去看看园子里的花还活着吗
这花被别人拿走了,再也看不到它了

main.go与go.mod的内容与之前相同,不同的是主程序的位置变了,

但这没有关系,这正是go mod的意义所在:你的项目代码可以在任意位置放置,只须正确引用github的代码;同时也无须关心依赖包的问题了,因为运行程序时, go自动下载依赖包到本地$GOPATH/pkg/mod目录。

关闭go mod

export GO111MODULE=off

关闭后,GOPATH生效

转载于:https://www.cnblogs.com/perfei/p/11514497.html

3.0 go mod之远程仓库搭建-代码示例相关推荐

  1. linux 安装mysql 8.0_Linux安装mysql 8.0的详细方法介绍(代码示例)

    本篇文章给大家带来的内容是关于Linux安装mysql 8.0的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 经过一番努力下载mysql文件,我们可以开始M ...

  2. JDK1.6.0新特性详解与代码示例 - 徐明明的博客 - CSDNBlog

    JDK6.0发布有段时间了,新的JDK也有不少新的特性,我去网上搜集了一下,列在下面和大家一起学习. 1.Desktop和SystemTray. 在JDK6中 ,AWT新增加了两个类:Desktop和 ...

  3. HTTP.sys 远程执行代码验证工具

    漏洞信息: 远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HTTP.sys 未正确分析经特殊设计的 HTTP 请求时会导致此漏洞.这里将测试工具改成windows版本方便工 ...

  4. 【复现】CVE-2015-1635-HTTP.SYS远程执行代码漏洞(ms15-034)

    1.1.1  漏洞描述 在2015年4月安全补丁日,微软发布的众多安全更新中,修复了HTTP.sys中一处允许远程执行代码漏洞,编号为:CVE-2015-1635(MS15-034 ).利用HTTP. ...

  5. 2.9 go mod 之本地仓库搭建

    wiki https://github.com/golang/go/wiki/Modules#how-to-prepare-for-a-release 参考 https://blog.csdn.net ...

  6. 【flink】Flink 使用IntelliJ IDEA 进行远程调试代码

    1.概述 转载:Flink 使用IntelliJ IDEA 进行远程调试代码 改文章和 95-070-040-源码-源码调试-FLINK源代码调试方式 重复了. Flink on Yarn 不好调试, ...

  7. 从入门到入土:基于C语言采用UDP协议实现远程控制|详细说明|利用流套接字实现一个简单的远程控制系统|代码展示

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  8. phpstrom+xdebug调试远程服务器代码

    phpstrom+xdebug调试远程服务器代码 调试远程服务器代码前提是在本机上有服务器上的代码并保持一致(svn或者ftp,文件共享) 1.在服务器上安装xdebug扩展 cd /xdebug/s ...

  9. CVE-2015-1635-HTTP.SYS远程执行代码漏洞复现

    CVE-2015-1635-HTTP.SYS远程执行代码漏洞复现 一.漏洞描述 远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HTTP.sys 未正确分析经特殊设计的 HT ...

最新文章

  1. ajax的交互流程有哪几步
  2. 第三次学JAVA再学不好就吃翔(part56)--StringBuffer的替换反转和截取功能
  3. 使用iBatis数据映射框架吧
  4. 美团门票公布清明假期数据:单日入园人次超200万
  5. 查询本地内存的栈大小_JVM内存结构
  6. CAM350对比电路图方法
  7. 最简理解空间射线与平面交点
  8. Foobar2000之处理无损音乐格式
  9. 苹果恢复出厂设置系统也会还原吗_手机经常恢复出厂设置会怎么样?对手机有害处吗?这下终于清楚了...
  10. 山西流传于百姓餐桌的宫府名菜——山西过油肉
  11. 华为机试——字符串压缩(stringZip)
  12. 王者荣耀微信登陆不了服务器,王者荣耀微信区怎么登陆不了 王者荣耀微信区怎么登不上...
  13. 写代码实现堆溢出、栈溢出、永久代溢出、直接内存溢出
  14. 光滑曲线_光滑流形(4)
  15. win10系统的定位服务器,系统大神教你Win10笔记本电脑定位跟踪功能技巧
  16. 如何使用Photoshop 2021给图片制作出渐变效果?
  17. 直男 or Gay?看看你的DNA标记!
  18. Excel Vba无法连接 远程 Mysql数据库问题的解决方法
  19. 物理模型 - Physical Data Model
  20. ubuntu12.04下触摸屏YT-104CQT驱动安装教程

热门文章

  1. can使能上拉 gpio_IMX6ULL 的 GPIO 操作方法
  2. 【Python CheckiO 题解】Index Power
  3. 【Python CheckiO 题解】House Password
  4. 【POJ - 2255】Tree Recovery (给定树的先序中序,输出后序)
  5. 使用matplotlib进行简单的数据展示
  6. 使用PDF.js实现前端和手机端网页预览PDF文件(可定制,支持本地文件、Base64编码和远程URL跨域方式)
  7. ckeditor5自定义 vue_vue中的富文本编辑器CKEditor5
  8. python代码测试 vim_用 Hypothesis 快速测试你的 Python 代码
  9. leetcode1290. 二进制链表转整数 刷新认知,最简单算法题
  10. insert函数的修改,