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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视界云:CDN{内容分发网络} 知识详解

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 CDN 全称:Content Delivery Network或Content Ddistribute Network&#xff0c;即内容分发网络 基本思路&#xff1a; 尽可能避开互联…

2019牛客多校第七场E Find the median 权值线段树+离散化

Find the median题目链接&#xff1a; https://ac.nowcoder.com/acm/contest/887/E 题目描述 Let median of some array be the number which would stand in the middle of this array if it was sorted beforehand. If the array has even length let median be smallest of …

男人肾虚的8大表现

导语&#xff1a;肾虚是一种常见的现象。尤其是男人&#xff0c;最害怕的就是肾虚。男人的了肾虚怎么办&#xff0c;肾虚主要都有哪些症状。下面专家给大家介绍一下男人肾虚的几种表现&#xff1a; 一、畏寒肢冷 “畏寒”指有怕冷而且怕风吹的感觉。“肢冷”指四肢手足冰冷&…

更改 nginx 默认端口 ( ubuntu、linux )

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 我想让一个demo 站点直接域名访问&#xff0c;不带端口&#xff0c;所以想用 80 端口启动对应前端工程。 发现 80 被 nginx 占用&a…

怎么更改Rstudio中的默认目录

方法一、 每次启动Rstudio之后&#xff0c;执行代码 setwd("F:/R/R_data")默认目录就会修改为双引号内的位置路径。 方法二、 对Rstudio进行设置一次即可。 ①点击Tools&#xff0c;打开Global Options. ②将位置设置完毕&#xff0c;点击 Apply 确认即可。 ③Rstudi…

职场十个方法 让专业气质成为你的符号!

1、任何时候都要准时。   上班或是开会的时候迟到&#xff0c;都会给别人一种你对工作不够认真的印象。所以请一定要多多注意时间的问题。当然你要注意的不仅仅是开始的时间&#xff0c;还有午休结束的时间&#xff0c;可不要贪图几分钟的自由&#xff0c;弃你的专业气质于不…

docker 虚悬镜像 ( 悬空镜像 ) :镜像没有仓库名或没有标签

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 我们在build镜像的过程中&#xff0c;可能会产生一些临时的不具有名称也没有作用的镜像他们的名称一般都是<none>, 我们可以执…

R-apply()函数

创建一个列表变量&#xff0c;它的第一个元素包含所有从0到9的平方数&#xff0c;第二个元素为10到19之内的所有平方数&#xff0c;依此类推&#xff0c;最后一个元素为90到99之内的平方数。没有平方数的元素也应该被包含在内&#xff01; 学习网友的解题思路&#xff0c;用的是…

编程兴趣真的是由“热情”驱动的吗?

当我告诉人们我以写代码为生时&#xff0c;他们翻着白眼问我编程是不是特无聊&#xff1f;有许多编程博客告诉我们&#xff0c;如果你想要精于编程&#xff0c;那么就必须先热爱编程。那么&#xff0c;这是不是意味着如果没有激情&#xff0c;那你就写不出一行代码&#xff1f;…

心生想往 ... ...

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 连日里的忙碌 ... 终又忍不住开始想往 ... 听着歌儿 放纵篇篇翻飞思绪 ... 抛下纷繁的朝九晚六和所有加班&#xff0c;于每一日&#…

C# 打开文件/跳转链接

mark一下~ 打开文件 1.打开文件夹&#xff1a; System.Diagnostics.Process.Start(FolderPath);-- 打开文件夹 System.Diagnostics.Process.Start(FolderPath"/"FileName); -- 打开文件夹中某个文件 2.用IE打开文件: System.Diagnostics.Process.Start("Explore…

身体曲线如何反映出健康

站在镜子前&#xff0c;看看自己的身材&#xff0c;是否匀称优美?身体曲线不仅是美和丑的象征&#xff0c;同时还能够反映出你的健康状况。 1.腿细 有些人四肢纤细或运动后易酸痛&#xff0c;可能意味着肌肉少、力量弱。多项研究表明&#xff0c;肌肉与健康状况及寿命都存在…

路的尽头 ...

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一直一直的 想要有一个只属于自己的地方&#xff0c;或许可以说不只是一个地方&#xff0c;我想要的是一个叫作家的地方... 每每看到温…

R 数据框的操作

1.插入一列 根据自带数据集beaver 进行操作&#xff0c;比如插入一列id。 > colnames(beaver1) [1] "day" "time" "temp" "activ" > nrow(beaver1) [1] 114 方法1&#xff1a; new_beaver1$id rep(1,114)方法2 new_beaver1…

Docker 下载 JDK 镜像(docker search 、docker pull)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 我有一个dockerfile 中要引用 jdk。 运行脚本发现 居然没有JDK 原始镜像。早期是下载过的&#xff0c;不记得什么时候清掉了。 于是重新…

入夏多吃这些“杀菌菜”

天气逐渐变热&#xff0c;病原菌滋生快&#xff0c;肝炎、急性胃炎、急性肠炎、痢疾、霍乱等消化道疾病容易爆发。此时多吃“杀菌蔬菜”有杀灭和抑制细菌病毒的作用&#xff0c;有时甚至光靠这些杀菌菜就可以治疗疾病。 专家建议&#xff0c;在炎热的夏季为了保证胃肠道的健康&…

R 读取excel的方法

1.加载 readxl 包&#xff0c;利用 reade_excel() 函数 install.packages("readxl") library(readxl) data read_excel("22_data.xlsx",sheet 1) read_excel函数的参数设置&#xff1a; 用法&#xff1a;read.xlsx(xlsxFile, sheet 1, startRow 1, co…

数据结构与算法-ADT-Array

Array ADT 一维数组是连续元素的集合&#xff0c;其中的每个元素都可以通过唯一的整数下标来存取。数组的大小在创建后不能修改。 ADT 定义&#xff1a; Array(size): 创建一个长度为 size 的一维数组&#xff0c;并且将每个元素初始化成 Nonelength(): 返回数组中的元素个数ge…

前端VUE工程不占用80端口,浏览器不带端口访问VUE项目的实现

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1.需求&#xff1a;直接域名访问项目&#xff0c;不用IP&#xff0c;也不带端口号。 1&#xff09;访问项目方法通常是 IP&#xff1a;…

新驾考科目三有四个地方易犯错 多名教练提供对策

驾考科目三 四个地方易犯错 多名驾校教练为学员分析原因提供对策 “现在电子评判&#xff0c;比起原来人工评判&#xff0c;更客观&#xff0c;更公平。”有驾校教练把自己这两天当安全员参加考试的经验拿出来与学员们分享。 18分钟来得及 “考试时间完全够用!”20日安康达驾校…