最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語(yǔ)言依賴(lài)管理三要素示例解析

 更新時(shí)間:2023年01月19日 08:43:29   作者:啵啵腸  
這篇文章主要介紹了Go語(yǔ)言依賴(lài)管理三要素及示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

背景

開(kāi)發(fā)項(xiàng)目時(shí)應(yīng)學(xué)會(huì)站在巨人的肩膀上,即有效利用開(kāi)發(fā)組件進(jìn)行或工具提升自己的研發(fā)效率

對(duì)于較簡(jiǎn)單的單體函數(shù)而言,只需要依賴(lài)原生的SDK即可完成開(kāi)發(fā)

對(duì)于實(shí)際開(kāi)發(fā)的工程較于復(fù)雜,應(yīng)將精力投放在實(shí)現(xiàn)的業(yè)務(wù)邏輯之上

  • 工程項(xiàng)目不可能基于標(biāo)準(zhǔn)庫(kù)0-1編碼搭建
  • 管理依賴(lài)庫(kù)

GOPATH 模式

GOPATH為環(huán)境變量 包含bin、pkg、src三部分

$GOPATH:項(xiàng)目根路徑

  • src:項(xiàng)目源代碼
  • bin:項(xiàng)目編譯的二進(jìn)制文件 可執(zhí)行程序
  • pkg:項(xiàng)目編譯的中間產(chǎn)物 加速編譯 第三方依賴(lài)包

運(yùn)行方式:

所有工程代碼要求放在GOPATH/src目錄下 工程本身也將作為一個(gè)依賴(lài)包,可以被其它 GOPATH/src 目錄下的工程引用 在 $GOPATH/src下進(jìn)行 .go 文件或源代碼的存儲(chǔ),我們可以稱(chēng)其為 GOPATH 的模式

缺點(diǎn):

  • 沒(méi)有版本控制的概念
  • 所有項(xiàng)目都要放在$GOPATH/src目錄下,不在當(dāng)前目錄則不能編譯

GO Vendor模式

解決 GOPATH模式 所有項(xiàng)目都在$GOPATH/src目錄的問(wèn)題 可以隨處可以創(chuàng)建項(xiàng)目,不用扎堆 src 目錄下

原理:本地化構(gòu)建

在每個(gè)項(xiàng)目下都創(chuàng)建一個(gè)vendor目錄,每個(gè)項(xiàng)目所需要的以來(lái)都會(huì)下載到自己的vendor目錄下。在使用包時(shí),會(huì)先從當(dāng)前項(xiàng)目下的vendor目錄查找,然后再?gòu)腉OPATH中查找,都沒(méi)有找到最后才在GOROOT中查找(依賴(lài)尋址方式:vendor -> GOPATH)

缺點(diǎn):

  • 放棄了依賴(lài)重用,使得冗余度上升
  • 無(wú)法控制依賴(lài)的版本 更新項(xiàng)目可能出現(xiàn)依賴(lài)沖突 導(dǎo)致編譯出錯(cuò)

Go Module模式

1.16版本后默認(rèn)開(kāi)啟的模式

通過(guò)go.mod文件管理依賴(lài)的版本

通過(guò)go get/go mod指令工具管理依賴(lài)包

工程不用全放在gopath/src目錄下

定義版本規(guī)則和管理項(xiàng)目依賴(lài)關(guān)系

主要改動(dòng):

  • GO MODULE模式下所有依賴(lài)的包存放在$GOPATH/pkg/mod目錄下
  • 項(xiàng)目中需要有go.mod文件,來(lái)應(yīng)用$GOPATH/pkg/mod

依賴(lài)管理三要素

  • 配置文件 描述依賴(lài) go.mod
  • 中心倉(cāng)庫(kù)管理依賴(lài)庫(kù) Proxy
  • 本地工具 go get/mod

依賴(lài)配置 go.mod

module example.com/foobar
go 1.16
require (
    example.com/apple v0.1.2
    example.com/banana v1.2.3
    example.com/banana/v2 v2.3.4
    example.com/pineapple v0.0.0-20190924185754-1b0db40df49a
)
exclude example.com/banana v1.2.4
replace example.com/apple v0.1.2 => example.com/rda v0.1.0 
replace example.com/banana => example.com/hugebanana

go.mod 是啟用了 Go moduels 的項(xiàng)目所必須的最重要的文件,它描述了當(dāng)前項(xiàng)目(也就是當(dāng)前模塊)的元信息,每一行都以一個(gè)動(dòng)詞開(kāi)頭,目前有以下 5 個(gè)動(dòng)詞:

  • module:用于定義當(dāng)前項(xiàng)目的模塊路徑。
  • go:用于設(shè)置預(yù)期的 Go 版本。
  • require:用于設(shè)置一個(gè)特定的模塊版本。
  • exclude:用于從使用中排除一個(gè)特定的模塊版本。
  • replace:用于將一個(gè)模塊版本替換為另外一個(gè)模塊版本。

這里的填寫(xiě)格式基本為包引用路徑+版本號(hào),另外比較特殊的是 go $version,目前從 Go1.16 的代碼里來(lái)看,還只是個(gè)標(biāo)識(shí)作用,暫時(shí)未知未來(lái)是否有更大的作用。

go mod命令

常用的go mod命令如下:

go mod download    下載依賴(lài)的module到本地cache(默認(rèn)為$GOPATH/pkg/mod目錄)
go mod edit        編輯go.mod文件
go mod graph       打印模塊依賴(lài)圖
go mod init        初始化當(dāng)前文件夾, 創(chuàng)建go.mod文件
go mod tidy        增加缺少的module,刪除無(wú)用的module
go mod vendor      將依賴(lài)復(fù)制到vendor下
go mod verify      校驗(yàn)依賴(lài)
go mod why         解釋為什么需要依賴(lài) 

go get命令

在項(xiàng)目中執(zhí)行g(shù)o get命令可以下載依賴(lài)包,并且還可以指定下載的版本。

  • 運(yùn)行g(shù)o get -u將會(huì)升級(jí)到最新的次要版本或者修訂版本(x.y.z, z是修訂版本號(hào), y是次要版本號(hào))
  • 運(yùn)行g(shù)o get -u=patch將會(huì)升級(jí)到最新的修訂版本
  • 運(yùn)行g(shù)o get package@version將會(huì)升級(jí)到指定的版本號(hào)version 如果下載所有依賴(lài)可以使用go mod download命令。

快速使用go module

  • SET GOPROXY=goproxy.cn (這是win環(huán)境下的) export GOPROXY=goproxy.cn (這是mac環(huán)境下的)
  • go mod init [包名] // 初始化項(xiàng)目(如果你是初始化項(xiàng)目直接 go mod init 就好了)
  • 在目錄文件下會(huì)生成go.mod和go.sum文件 go.mod 里面包含了所有的包!
  • 在文件里面引入包名的時(shí)候有的編輯器會(huì)報(bào)錯(cuò)但是是可以正常編譯的
  • 下載包使用go get
  • 修改包的版本號(hào)直接去go.mod文件修改然后go mod download

小結(jié)

今天學(xué)習(xí)到的內(nèi)容還需要進(jìn)一步的消化,我也是打算將并發(fā)編程這一塊的內(nèi)容熟悉透徹了再進(jìn)行下一部分的課程學(xué)習(xí)。如果筆記中有錯(cuò)誤的地方也希望掘友們可以及時(shí)的提出糾正。

以上就是Go語(yǔ)言依賴(lài)管理三要素示例解析的詳細(xì)內(nèi)容,更多關(guān)于Go語(yǔ)言依賴(lài)管理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • GO語(yǔ)言入門(mén)學(xué)習(xí)之基本數(shù)據(jù)類(lèi)型字符串

    GO語(yǔ)言入門(mén)學(xué)習(xí)之基本數(shù)據(jù)類(lèi)型字符串

    字符串在Go語(yǔ)言中以原生數(shù)據(jù)類(lèi)型出現(xiàn),使用字符串就像使用其他原生數(shù)據(jù)類(lèi)型(int、bool、float32、float64 等)一樣,下面這篇文章主要給大家介紹了關(guān)于GO語(yǔ)言入門(mén)學(xué)習(xí)之基本數(shù)據(jù)類(lèi)型字符串的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • 用gomock進(jìn)行mock測(cè)試的方法示例

    用gomock進(jìn)行mock測(cè)試的方法示例

    go-mock是專(zhuān)門(mén)為go語(yǔ)言開(kāi)發(fā)的mock庫(kù),該庫(kù)使用方式簡(jiǎn)單,支持自動(dòng)生成代碼,這篇文章主要介紹了用gomock進(jìn)行mock測(cè)試的方法示例,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 深入了解Golang中的格式化輸出

    深入了解Golang中的格式化輸出

    fmt是Go語(yǔ)言中用于控制文本輸出的常用標(biāo)準(zhǔn)庫(kù),文中將通過(guò)示例詳細(xì)講解一下Go語(yǔ)言中不同形式的格式化輸出,感興趣的小伙伴可以了解一下
    2022-11-11
  • 淺析Go語(yǔ)言容器之?dāng)?shù)組和切片的使用

    淺析Go語(yǔ)言容器之?dāng)?shù)組和切片的使用

    在?Java?的核心庫(kù)中,集合框架可謂鼎鼎大名:Array?、List、Set等等,隨便拎一個(gè)出來(lái)都值得開(kāi)發(fā)者好好學(xué)習(xí)如何使用甚至是背后的設(shè)計(jì)源碼。雖然Go語(yǔ)言沒(méi)有如此豐富的容器類(lèi)型,但也有一些基本的容器供開(kāi)發(fā)者使用,接下來(lái)讓我們認(rèn)識(shí)一下這些容器類(lèi)型吧
    2022-11-11
  • Go?tablewriter庫(kù)提升命令行輸出專(zhuān)業(yè)度實(shí)例詳解

    Go?tablewriter庫(kù)提升命令行輸出專(zhuān)業(yè)度實(shí)例詳解

    命令行工具大家都用過(guò),如果是運(yùn)維人員可能會(huì)編寫(xiě)命令行工具來(lái)完成各種任務(wù),命令行輸出的美觀和易讀性往往容易被忽視,很爛的輸出會(huì)讓人感覺(jué)不專(zhuān)業(yè),本文將介紹Go語(yǔ)言中牛逼的實(shí)戰(zhàn)工具tablewriter庫(kù),使你在命令行輸出中展現(xiàn)出專(zhuān)業(yè)的一面
    2023-11-11
  • golang如何使用gos7讀取S7200Smart數(shù)據(jù)

    golang如何使用gos7讀取S7200Smart數(shù)據(jù)

    文章介紹了如何使用Golang語(yǔ)言的Gos7工具庫(kù)讀取西門(mén)子S7200Smart系列PLC的數(shù)據(jù),通過(guò)指定數(shù)據(jù)塊號(hào)、起始字節(jié)偏移量和數(shù)據(jù)長(zhǎng)度,可以精確讀取所需的數(shù)據(jù),感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • GO語(yǔ)言運(yùn)行環(huán)境下載、安裝、配置圖文教程

    GO語(yǔ)言運(yùn)行環(huán)境下載、安裝、配置圖文教程

    這篇文章主要介紹了GO語(yǔ)言運(yùn)行環(huán)境下載、安裝、配置圖文教程,需要的朋友可以參考下
    2017-02-02
  • golang 之 wire 庫(kù)的使用小結(jié)

    golang 之 wire 庫(kù)的使用小結(jié)

    Wire是一個(gè)用于Go語(yǔ)言的編譯時(shí)依賴(lài)注入庫(kù),通過(guò)代碼生成提高性能和可維護(hù)性,它支持編譯時(shí)依賴(lài)注入、類(lèi)型安全、簡(jiǎn)單易用等功能,文章通過(guò)代碼示例展示了如何使用Wire進(jìn)行依賴(lài)注入,并探討了其優(yōu)點(diǎn)如解耦、可測(cè)試和維護(hù)性,感興趣的朋友跟隨小編一起看看吧
    2025-03-03
  • golang切片拷貝的實(shí)現(xiàn)

    golang切片拷貝的實(shí)現(xiàn)

    在Golang中,切片的淺拷貝只復(fù)制指向?qū)ο蟮闹羔?而深拷貝則復(fù)制數(shù)據(jù)本身,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • 并發(fā)安全本地化存儲(chǔ)go-cache讀寫(xiě)鎖實(shí)現(xiàn)多協(xié)程并發(fā)訪問(wèn)

    并發(fā)安全本地化存儲(chǔ)go-cache讀寫(xiě)鎖實(shí)現(xiàn)多協(xié)程并發(fā)訪問(wèn)

    這篇文章主要介紹了并發(fā)安全本地化存儲(chǔ)go-cache讀寫(xiě)鎖實(shí)現(xiàn)多協(xié)程并發(fā)訪問(wèn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10

最新評(píng)論

河北区| 龙川县| 区。| 额济纳旗| 南阳市| 汝阳县| 北安市| 兴仁县| 明光市| 博爱县| 昆山市| 永吉县| 凤冈县| 罗源县| 工布江达县| 亳州市| 武乡县| 淳化县| 开鲁县| 浑源县| 河曲县| 光山县| 肇庆市| 龙海市| 江达县| 天祝| 富宁县| 镇平县| 郁南县| 汉寿县| 芦溪县| 宁津县| 旅游| 旅游| 东明县| 共和县| 台东县| 大荔县| 邓州市| 温泉县| 横峰县|