91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

go module 詳解

發布時間:2020-05-15 01:43:08 來源:網絡 閱讀:599 作者:chymingyan 欄目:編程語言

基礎知識

環境準備

  1. 使用golang 1.11以上版本的朋友,開啟 GO11MODULE=on ,并且確保實驗目錄不在 GOPATH 中,命令行里執行。
    export GO11MODULE=on
    export GO111MODULE=on
    2.golang 1.12和golang 1.13的朋友,確保實驗目錄不在 GOPATH 中。
    3.加速下載,命令行里執行。
    export GOPROXY=https://goproxy.io

    初始化go module環境

    帶git的項目

  2. 直接從github上面clone一個項目下來。
  3. 直接執行 go mod init 會自動生成帶git地址的packagename
  4. 執行命令:
    go mod init
    不帶git的項目
    直接執行
    go mod init packagename
    下載依賴包
    go mod download
    拉取必須模塊,移除不用的模塊
    go mod tidy
    ps:
  5. go get、 go run、go build 也會自動下載依賴
  6. 如果tag對應內容有更新,需要刪除pkg中的緩存內容;直接rm -rf *就可以了。
    添加新依賴包三種方式
    • 直接修改 go.mod 文件,然后執行 go mod download
    • 使用 go get packagename@v0.0.0,會自動更新 go.mod 文件的
    • go run、go build 也會自動下載依賴
      將依賴包下載到vendor目錄
      go mod vendor

功能介紹一
使用replace本地包替換:
基于國內萬能的防火墻,就可能會用到這個功能

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)規范 的一個實現,目前是由 npm 的團隊維護,實現了版本和版本范圍的解析、計算、比較。

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
)

總結:

  1. 一般情況,go mod init 和 go mod tidy 兩個命令就夠用了。
  2. 看$GOPATH/pkg/mod里面的文件就知道了,mod做了一件類似maven的事把所有包都打上了版本號;可以說這是 golang 邁向高大上語言的標志。
    從此我們不再為多版本使用的困擾,也不再為IDE打開一個新項目后等待n分鐘的生成緩存犯愁。推薦大家丟掉vendor使用統一管理。
    3.semver 將版本信息綁定進包名對于習慣了傳統包管理器方案的用戶來說顯得有些怪異,可能需要花上一些額外時間適應。
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

杭州市| 黄梅县| 鹤峰县| 鄂伦春自治旗| 东海县| 乐安县| 黑水县| 张北县| 陵川县| 长兴县| 潜江市| 长沙县| 成武县| 衡东县| 溧阳市| 静宁县| 远安县| 和顺县| 内江市| 拜泉县| 察隅县| 云霄县| 乌兰察布市| 图木舒克市| 丹巴县| 东乡| 肇源县| 奉贤区| 渭南市| 和林格尔县| 峨山| 台山市| 棋牌| 汽车| 通河县| 临沧市| 静安区| 连平县| 张北县| 信宜市| 洪泽县|