新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
gomodule詳解
基礎(chǔ)知識
環(huán)境準(zhǔn)備
- 使用golang 1.11以上版本的朋友,開啟 GO11MODULE=on ,并且確保實(shí)驗(yàn)?zāi)夸洸辉?GOPATH 中,命令行里執(zhí)行。
export GO11MODULE=on
export GO111MODULE=on
2.golang 1.12和golang 1.13的朋友,確保實(shí)驗(yàn)?zāi)夸洸辉?GOPATH 中。
3.加速下載,命令行里執(zhí)行。
export GOPROXY=https://goproxy.io初始化go module環(huán)境
帶git的項(xiàng)目
10年積累的成都網(wǎng)站建設(shè)、成都做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先制作網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有羅江免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
- 直接從github上面clone一個項(xiàng)目下來。
- 直接執(zhí)行 go mod init 會自動生成帶git地址的packagename
- 執(zhí)行命令:
go mod init
不帶git的項(xiàng)目
直接執(zhí)行go mod init packagename
下載依賴包go mod download
拉取必須模塊,移除不用的模塊go mod tidy
ps: - go get、 go run、go build 也會自動下載依賴
- 如果tag對應(yīng)內(nèi)容有更新,需要刪除pkg中的緩存內(nèi)容;直接rm -rf *就可以了。
添加新依賴包三種方式- 直接修改 go.mod 文件,然后執(zhí)行 go mod download
- 使用 go get packagename@v0.0.0,會自動更新 go.mod 文件的
- go run、go build 也會自動下載依賴
將依賴包下載到vendor目錄go mod vendor
功能介紹一
使用replace本地包替換:
基于國內(nèi)萬能的防火墻,就可能會用到這個功能
main.go
main.go
package main
import "packagepath/pkg"
func main() {
pkg.Hello()
}
go mod
module go-mod
require packagepath/pkg v0.0.0
replace packagepath/pkg => ./pkg
replace 可以文件夾,也可以是另外一個package
module go-mod
require packagepath/pkg v0.0.0
replace packagepath/pkg v0.0.0 => github.com/packagepath/pkg v0.0.0
ps:頂層依賴可替換但間接依賴不可替換
功能介紹二 semver—Semantic Versioning
semver 是 語義化版本(Semantic Versioning)規(guī)范 的一個實(shí)現(xiàn),目前是由 npm 的團(tuán)隊(duì)維護(hù),實(shí)現(xiàn)了版本和版本范圍的解析、計算、比較。
main.go
package main
import (
"fmt"
v1 "github.com/e421083458/gomodtest_base"
v2 "github.com/e421083458/gomodtest_base/v2"
)
func main(){
v2.NewIntCollection("hello","sex")
v1.NewIntCollection("hello")
fmt.Println("hello");
}
go.mod
module module_test
require (
github.com/e421083458/gomodtest_base v1.0.1
github.com/e421083458/gomodtest_base/v2 v2.0.0
)
總結(jié):
- 一般情況,go mod init 和 go mod tidy 兩個命令就夠用了。
- 看$GOPATH/pkg/mod里面的文件就知道了,mod做了一件類似maven的事把所有包都打上了版本號;可以說這是 golang 邁向高大上語言的標(biāo)志。
從此我們不再為多版本使用的困擾,也不再為IDE打開一個新項(xiàng)目后等待n分鐘的生成緩存犯愁。推薦大家丟掉vendor使用統(tǒng)一管理。
3.semver 將版本信息綁定進(jìn)包名對于習(xí)慣了傳統(tǒng)包管理器方案的用戶來說顯得有些怪異,可能需要花上一些額外時間適應(yīng)。
當(dāng)前標(biāo)題:gomodule詳解
網(wǎng)頁URL:http://www.ef60e0e.cn/article/iidcgd.html