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.pswp.cn/news/447821.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447821.shtml
英文地址,請注明出處:http://en.pswp.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日安康達駕校…