3.0 go mod之远程仓库搭建-代码示例
注意事项
所谓的远程仓库指的是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之远程仓库搭建-代码示例相关推荐
- linux 安装mysql 8.0_Linux安装mysql 8.0的详细方法介绍(代码示例)
本篇文章给大家带来的内容是关于Linux安装mysql 8.0的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 经过一番努力下载mysql文件,我们可以开始M ...
- JDK1.6.0新特性详解与代码示例 - 徐明明的博客 - CSDNBlog
JDK6.0发布有段时间了,新的JDK也有不少新的特性,我去网上搜集了一下,列在下面和大家一起学习. 1.Desktop和SystemTray. 在JDK6中 ,AWT新增加了两个类:Desktop和 ...
- HTTP.sys 远程执行代码验证工具
漏洞信息: 远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HTTP.sys 未正确分析经特殊设计的 HTTP 请求时会导致此漏洞.这里将测试工具改成windows版本方便工 ...
- 【复现】CVE-2015-1635-HTTP.SYS远程执行代码漏洞(ms15-034)
1.1.1 漏洞描述 在2015年4月安全补丁日,微软发布的众多安全更新中,修复了HTTP.sys中一处允许远程执行代码漏洞,编号为:CVE-2015-1635(MS15-034 ).利用HTTP. ...
- 2.9 go mod 之本地仓库搭建
wiki https://github.com/golang/go/wiki/Modules#how-to-prepare-for-a-release 参考 https://blog.csdn.net ...
- 【flink】Flink 使用IntelliJ IDEA 进行远程调试代码
1.概述 转载:Flink 使用IntelliJ IDEA 进行远程调试代码 改文章和 95-070-040-源码-源码调试-FLINK源代码调试方式 重复了. Flink on Yarn 不好调试, ...
- 从入门到入土:基于C语言采用UDP协议实现远程控制|详细说明|利用流套接字实现一个简单的远程控制系统|代码展示
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...
- phpstrom+xdebug调试远程服务器代码
phpstrom+xdebug调试远程服务器代码 调试远程服务器代码前提是在本机上有服务器上的代码并保持一致(svn或者ftp,文件共享) 1.在服务器上安装xdebug扩展 cd /xdebug/s ...
- CVE-2015-1635-HTTP.SYS远程执行代码漏洞复现
CVE-2015-1635-HTTP.SYS远程执行代码漏洞复现 一.漏洞描述 远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HTTP.sys 未正确分析经特殊设计的 HT ...
最新文章
- ajax的交互流程有哪几步
- 第三次学JAVA再学不好就吃翔(part56)--StringBuffer的替换反转和截取功能
- 使用iBatis数据映射框架吧
- 美团门票公布清明假期数据:单日入园人次超200万
- 查询本地内存的栈大小_JVM内存结构
- CAM350对比电路图方法
- 最简理解空间射线与平面交点
- Foobar2000之处理无损音乐格式
- 苹果恢复出厂设置系统也会还原吗_手机经常恢复出厂设置会怎么样?对手机有害处吗?这下终于清楚了...
- 山西流传于百姓餐桌的宫府名菜——山西过油肉
- 华为机试——字符串压缩(stringZip)
- 王者荣耀微信登陆不了服务器,王者荣耀微信区怎么登陆不了 王者荣耀微信区怎么登不上...
- 写代码实现堆溢出、栈溢出、永久代溢出、直接内存溢出
- 光滑曲线_光滑流形(4)
- win10系统的定位服务器,系统大神教你Win10笔记本电脑定位跟踪功能技巧
- 如何使用Photoshop 2021给图片制作出渐变效果?
- 直男 or Gay?看看你的DNA标记!
- Excel Vba无法连接 远程 Mysql数据库问题的解决方法
- 物理模型 - Physical Data Model
- ubuntu12.04下触摸屏YT-104CQT驱动安装教程
热门文章
- can使能上拉 gpio_IMX6ULL 的 GPIO 操作方法
- 【Python CheckiO 题解】Index Power
- 【Python CheckiO 题解】House Password
- 【POJ - 2255】Tree Recovery (给定树的先序中序,输出后序)
- 使用matplotlib进行简单的数据展示
- 使用PDF.js实现前端和手机端网页预览PDF文件(可定制,支持本地文件、Base64编码和远程URL跨域方式)
- ckeditor5自定义 vue_vue中的富文本编辑器CKEditor5
- python代码测试 vim_用 Hypothesis 快速测试你的 Python 代码
- leetcode1290. 二进制链表转整数 刷新认知,最简单算法题
- insert函数的修改,