新聞中心
GO語言(二十五):管理依賴項(上)-
當(dāng)您的代碼使用外部包時,這些包(作為模塊分發(fā))成為依賴項。隨著時間的推移,您可能需要升級或更換它們。Go 提供了依賴管理工具,可幫助您在合并外部依賴項時確保 Go 應(yīng)用程序的安全。
建始網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),建始網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為建始數(shù)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個售后服務(wù)好的建始做網(wǎng)站的公司定做!
本主題介紹如何執(zhí)行任務(wù)以管理您在代碼中承擔(dān)的依賴項。您可以使用 Go 工具執(zhí)行其中的大部分操作。本主題還介紹了如何執(zhí)行其他一些您可能會覺得有用的依賴相關(guān)任務(wù)。
您可以通過 Go 工具獲取和使用有用的包。在 pkg.go.dev 上,您可以搜索您可能覺得有用的包,然后使用go命令將這些包導(dǎo)入您自己的代碼中以調(diào)用它們的功能。
下面列出了最常見的依賴項管理步驟。
在 Go 中,您將依賴項作為包含您導(dǎo)入的包的模塊來管理。此過程由以下機構(gòu)支持:
您可以搜索pkg.go.dev以查找具有您可能覺得有用的功能的軟件包。
找到要在代碼中使用的包后,在頁面頂部找到包路徑,然后單擊復(fù)制路徑按鈕將路徑復(fù)制到剪貼板。在您自己的代碼中,將路徑粘貼到導(dǎo)入語句中,如下例所示:
在您的代碼導(dǎo)入包后,啟用依賴項跟蹤并獲取包的代碼進行編譯。
要跟蹤和管理您添加的依賴項,您首先要將代碼放入其自己的模塊中。這會在源代碼樹的根目錄創(chuàng)建一個 go.mod 文件。您添加的依賴項將列在該文件中。
要將您的代碼添加到它自己的模塊中,請使用 go mod init命令。例如,從命令行切換到代碼的根目錄,然后按照以下示例運行命令:
該go mod init命令的參數(shù)是您的模塊的模塊路徑。如果可能,模塊路徑應(yīng)該是源代碼的存儲庫位置。
如果一開始您不知道模塊的最終存儲庫位置,請使用安全的替代品。這可能是您擁有的域的名稱或您控制的另一個名稱(例如您的公司名稱),以及來自模塊名稱或源目錄的路徑。
當(dāng)您使用 Go 工具管理依賴項時,這些工具會更新 go.mod 文件,以便它維護您的依賴項的當(dāng)前列表。
添加依賴項時,Go 工具還會創(chuàng)建一個 go.sum 文件,其中包含您所依賴的模塊的校驗和。Go 使用它來驗證下載的模塊文件的完整性,特別是對于在您的項目上工作的其他開發(fā)人員。
在代碼中包含存儲庫中的 go.mod 和 go.sum 文件。
當(dāng)您運行g(shù)o mod init創(chuàng)建用于跟蹤依賴項的模塊時,您指定一個模塊路徑作為模塊的名稱。模塊路徑成為模塊中包的導(dǎo)入路徑前綴。一定要指定一個不會與其他模塊的模塊路徑?jīng)_突的模塊路徑。
至少,一個模塊路徑只需要表明它的來源,例如公司或作者或所有者名稱。但是路徑也可能更能描述模塊是什么或做什么。
模塊路徑通常采用以下形式:
1、Go 工具可以在其中找到模塊源代碼的存儲庫的位置。
例如,它可能是github.com/ /.
如果您認(rèn)為您可能會發(fā)布模塊供其他人使用,請使用此最佳實踐。
2、一個你控制的名字。
如果您不使用存儲庫名稱,請務(wù)必選擇一個您確信不會被其他人使用的前綴。一個不錯的選擇是您公司的名稱。避免使用常用術(shù)語,例如widgets、utilities或 app。
Go 保證以下字符串不會在包名稱中使用。
1、test– 您可以將test用作模塊路徑前綴以便代碼用于在另一個模塊中本地測試功能進行測試。
使用test作為模塊路徑前綴是測試的一部分。例如,您的測試本身可能會運行g(shù)o mod init test,然后以某種特定方式設(shè)置該模塊,以便使用 Go 源代碼分析工具進行測試。
2、example– 在某些 Go 文檔中用作模塊路徑前綴,例如在創(chuàng)建模塊以跟蹤依賴關(guān)系的教程中。
請注意,Go 文檔還用于example.com說明示例何時可能是已發(fā)布的模塊。
Golang棄用go get工具
由于golang發(fā)布了新版本1.17.1,你可能會在使用go get -u安裝包時得到這個錯誤。
例如:在安裝goose包時使用:
返回如下錯誤:
go get在g.mod中同時用于更新依賴和安裝命令。這種組合很混亂,使用起來也很不方便,因為開發(fā)人員不想同時進行更新和安裝。
隨著1.17.1版本的發(fā)布不再支持go get命令。那么以后如何安裝依賴包呢?
1、根據(jù)文檔,如果要在當(dāng)前模塊的上下文中安裝可執(zhí)行文件時,使用go install不帶版本后綴。如下所示:
這個命令適用于安裝當(dāng)前目錄或父目錄中g(shù)o.mod定義的版本要求和其他命令。
2、要安裝可執(zhí)行文件同時忽略當(dāng)前模塊go.mod,使用go install帶上版本后綴例如:@v1.2.3 或@latest
因此變化在于:使用install替換get,去除-u在包URL末尾添加@latest?;蛘邔τ谂f版本不是最新版本情況,在包URL的末尾添加指定版本。
現(xiàn)在可以成功安裝。
Golang常用包有哪些
⑴ Go Kit
它本身不是一個框架,而是一套微服務(wù)工具集,可以用于解決分布式系統(tǒng)開發(fā)中的大多數(shù)常見問題,所以使用者可以專注于你的業(yè)務(wù)邏輯中。
⑵ Gingko
是一個Go測試框架,目的是幫助我們使用行為驅(qū)動開發(fā)風(fēng)格高效地編寫富有表現(xiàn)力和全面的測試,它有著非常良好的幫助文檔,任何人都可以輕松地在項目中集成使用它。
⑶ NSQ
實時分布式消息傳遞平臺,提供高可用性和可靠的消息傳遞保證,可以水平擴展,支持負(fù)載均衡,安裝部署非常方便。
⑷ Goose
Golang中最佳的數(shù)據(jù)庫遷移包,通過創(chuàng)建增量SQL更改和Go函數(shù)來管理數(shù)據(jù)庫結(jié)構(gòu),在Go1.16版本以上,還支持了嵌入式sql遷移。
⑸ GORM
是一個功能齊全的Golang對象關(guān)系映射庫,是一種開發(fā)人員友好的工具,用于在不兼容的類型系統(tǒng)之間轉(zhuǎn)換數(shù)據(jù),專門設(shè)計用于在類型系統(tǒng)之間切換時最大限度地減少重寫代碼。
⑹ Authboss
一個模塊化的身份驗證包,使用它你可以快速地在項目中進行身份驗證管理。它有幾個常見的身份驗證和授權(quán)模塊供開發(fā)人員選擇。
⑺ cli
是一個簡單快捷的命令行管理包,用于為Go語言構(gòu)建命令行應(yīng)用程序,允許開發(fā)人員開發(fā)自己的富有表現(xiàn)力的命令行應(yīng)用程序,用于創(chuàng)建標(biāo)志、bash完成例程并生成幫助文本。
⑻ Vegeta
是一個用于HTTP負(fù)載測試的工具包,這個多功能工具專為測試具有恒定請求率的HTTP服務(wù)而設(shè)計。它可以有效地分析程序中的潛在問題,是一個始終貫穿以提高整體性能為目的的包。
go語言設(shè)置goos為darwin不生效,這是為啥?
設(shè)置Go操作系統(tǒng)變量(GOOS)為“darwin”應(yīng)該有效,但有幾種情況可能導(dǎo)致它不起作用:
1.在設(shè)置GOOS變量時可能出現(xiàn)拼寫錯誤。請確保將其拼寫為“darwin”,而不是“darvin”等其他類似的拼寫錯誤。
2.應(yīng)該將GOOS變量設(shè)置為環(huán)境變量或在命令行中使用“export”命令進行設(shè)置(如:export GOOS=darwin)。如果您沒有使用這些方式來設(shè)置變量,它可能不會生效。
3.如果您正在使用交叉編譯進行跨操作系統(tǒng)編譯,則GOOS變量只會影響目標(biāo)操作系統(tǒng),并不會影響宿主操作系統(tǒng)。因此,在這種情況下,即使您設(shè)置了GOOS為“darwin”,但如果您在Windows主機上進行編譯,則仍將使用Windows操作系統(tǒng)的設(shè)置和限制。
如果您遵循正確的設(shè)置步驟,但GOOS仍然無法生效,請確認(rèn)您的Go安裝是否正確并徹底,并且沒有其他版本的Go正在干擾。
分享標(biāo)題:go語言使用goose go語言使用lua腳本
URL地址:http://fisionsoft.com.cn/article/ddopjgs.html