Go 工具鏈詳解(七):模塊緩存清理工具

go mod 緩存

在 Golang 中,模塊是對一組版本化的包的集合的描述。Go 1.11 版本引入了模塊支持,通過 go mod 命令提供了對模塊的管理。Go 模塊的一個重要特性是依賴管理,可以清晰地定義項目所依賴的模塊及對應的版本,并確保代碼使用正確的版本。

運行 go mod tidy 或 go mod download 命令時,Go 會檢查 go.mod 文件中的依賴項,并先從緩存中查找。如果找不到,就會通過網絡下載該模塊并存儲在緩存中(默認存儲在 $GOPATH/pkg/mod 目錄下面)。下次運行相同的命令時,Go 會直接使用緩存中的版本,除非強制要求更新到最新版本。這樣就可以快速獲取到依賴項,而不需要重新下載。

go mod 緩存的好處

  • 減少網絡請求:模塊第一次下載后會被緩存到本地,后續構建不需要再次下載。
  • 提高構建速度:直接從本地緩存中獲取依賴項,可以顯著提高構建速度。
  • 離線工作:因為模塊緩存在本地,即使沒有網絡也依然可以進行構建。

go mod 緩存管理

可以使用 go mod 來管理模塊緩存,常用命令如下:

  • go mod tidy:用來更新 go.mod 文件以確保所有的依賴包都被準確地記錄下來,會添加缺失的模塊,刪除無用的模塊。
  • go mod download:下載 go.mod 文件中指定的所有依賴包并緩存到本地。
  • go mod verify:檢查依賴的完整性和正確性,會檢查 go.sum 文件中的每個依賴是否存在,有沒有被修改。
  • go mod vendor:將依賴項復制到項目的 vendor 目錄下,這樣可以不使用模塊緩存進行構建。

緩存的注意事項

  • 緩存的模塊是只讀的,是為了確保模塊的完整性和可重復性。
  • 如果直接修改了緩存中的文件,將無法保證構建的一致性。
  • 清理緩存可能會需要重新下載依賴項,可能會消耗額外的時間和帶寬。

Go 模塊緩存是一個很實用的特性,可以幫助開發者更高效地管理和構建項目。通過合理的緩存管理,可以確保依賴項的快速獲取和項目的穩定構建。

清理緩存

go clean 是 Go 語言工具鏈的一部分,用于清除構建過程產生的文件和目錄。這個命令主要用來移除當前包或模塊的對象文件和緩存文件。

以下是 `go clean` 命令的一些常用選項和用法:

  • -i:除了清除構建產物外,還會刪除相關的包和可執行文件。
  • -r:遞歸清除所有依賴包。
  • -n:打印將要執行的清除命令,而不實際執行。
  • -x:打印出執行的詳細命令,用于調試或理解 go clean 在幕后做了什么。
  • -cache:清理構建緩存,但不會刪除無用文件。構建緩存包括編譯過程中生成的中間文件和對象文件。
  • -modcache:清理模塊緩存。模塊緩存包括在模塊管理過程中下載的模塊文件和依賴項信息。
  • -testcache:清理測試緩存。測試緩存包括在測試運行過程中生成的文件和狀態。
  • -fuzzcache:刪除存儲在 Go 構建緩存中用于模糊測試的文件。模糊測試引擎緩存了那些擴展代碼覆蓋率的文件,因此刪除緩存后可能會使模糊測試的效果降低。這些文件與存儲在 testdata 目錄中的文件不同,clean 命令不會刪除 testdata 中的文件。

go clean 使用示例:

  • 清除當前包的對象文件
go clean
  • 清除特定包的對象文件:
go clean -i github.com/example/mylib
  • 清除模塊緩存:
go clean -modcache
  • 清除編譯和測試緩存:
go clean -cache -testcache
  • 遞歸清除所有依賴包的對象文件:
go clean -r ./...
  • 清除構建緩存中用于模糊測試的文件
go clean -fuzzcache

需要注意的是,go clean 會刪除文件和目錄,因此在使用前應當確保不會誤刪重要的數據。因為 go build 和其他一些命令會自動緩存構建和測試的結果,所以一般情況下不需要使用 go clean 命令。不過在某些情況下,例如磁盤空間緊張或者需要徹底清除所有構建產物以確保從干凈狀態開始構建時,go clean 就非常有用了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160301.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160301.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160301.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

電磁優化的并行空間映射方法

空間映射(SM)是一種公認的加速電磁優化的方法。現有的SM方法大多基于順序計算機制。本文提出了一種用于電磁優化的并行SM方法。在該方法中,每次迭代開發的代理模型被訓練以同時匹配多個點的精細模型。多點訓練和SM使代理模型在比標準SM更大的鄰域內有效。本文提出的…

[補題記錄] Complete the Permutation(貪心、set)

URL:https://codeforces.com/group/OcmZ7weh45/contest/487583/problem/J 目錄 Problem/題意 Thought/思路 Code/代碼 Problem/題意 給出一個長度為 N 的序列,其中的元素都是奇數。 現在要求在兩個奇數之間插入一個偶數,使得這三個數遞增…

信息壓縮模型在自然語言處理中的應用和探討

信息壓縮模型在自然語言處理中的應用和探討 摘要:正文:結論:附錄:摘要: 隨著人工智能和深度學習的發展,自然語言處理(NLP)在信息處理中的角色變得越來越重要。然而,海量的自然語言數據為信息處理帶來了挑戰——更多的信息通常意味著更高的處理成本,并可能導致效率降低。為…

一個工具讓你明白“萬丈高樓平地起”,拒絕重復造輪子!

大家在公司工作當中是不是很多時間裝環境很麻煩,一個項目要上線了,開始網上搜了一邊又一遍的環境搭建教程?等到下一個項目要上線了,又上網上搜了一邊又一遍的環境搭建教程。關鍵天花亂墜的互聯網,找不到很靠譜的呀。有…

數組的移動

設計程序&#xff0c;給定包含N個整數的數組array&#xff0c;實現操作&#xff1a;前面各個整數順序向后移動m個位置&#xff0c;最后的m個整數移動到最前面。方法&#xff1a;void move(int array[], int n,int m ) 輸入要求 第一行輸入兩個整數N(1<N<1e6)和m(0<m&…

webpack 配置

1、基礎配置 // node js核心模塊 const path require(path) // 插件是需要引入使用的 const ESLintPlugin require(eslint-webpack-plugin) // 自動生成index.html const HtmlWebpackPlugin require(html-webpack-plugin); // 將css文件單獨打包&#xff0c;在index.html中…

如何做好項目管理?年薪百萬項目大佬一直在用這11張圖

大家好&#xff0c;我是老原。 日常工作中&#xff0c;我們會遇到各種大大小小的工作項目&#xff0c;如何能讓項目保質保量的完成&#xff0c;是我們項目經理的目標。 項目管理的流程可以說是由一系列的子過程組成的&#xff0c;它是一個循序漸進的過程&#xff0c;所以不能…

python數字

目錄 整數&#xff08;如&#xff0c;2、4、20 &#xff09;的類型是 int&#xff0c;帶小數&#xff08;如&#xff0c;5.0、1.6 &#xff09;的類型是 float。 Python 用 ** 運算符計算乘方 1&#xff1a; 等號&#xff08;&#xff09;用于給變量賦值。 解釋器像一個簡單…

進程API

linux下進程的api forkwaitexec fork #include <stdio.h> #include <stdlib.h> #include <unistd.h>/* linux環境運行 子進程并不是完全拷貝了父進程。具體來說&#xff0c;雖然它擁有自己的 地址空間&#xff08;即擁有自己的私有內存&#xff09;、寄存器…

【Delphi】使用TWebBrowser執行JavaScript命令傳入JSON參數執行出錯解決方案

目錄 一、問題背景&#xff1a; 二、實際示例&#xff1a; 三、解決方案&#xff1a; 1. Delphi 代碼&#xff1a; 2. javaScript代碼&#xff1a; 一、問題背景&#xff1a; 在用Delphi開發程序&#xff0c;無論是移動端還是PC端&#xff0c;都可以很方便的使用TWebBrows…

Postman如何使用(一):導入導出和發送請求查看響應

一、Postman如何導入導出打包的應用 在Postman中導入導出我們的 測試數據包 和 工作環境 非常的方便&#xff1a; 導出數據包的方法如下&#xff1a; 如果你想學習自動化測試&#xff0c;我這邊給你推薦一套視頻&#xff0c;這個視頻可以說是B站播放全網第一的自動化測試教程…

七天.NET 8操作SQLite入門到實戰 - 第三天SQLite快速入門

前言 今天我們花費一個小時快速了解SQLite數據類型、SQLite常用命令和語法。 七天.NET 8操作SQLite入門到實戰詳細教程 第一天 SQLite 簡介第二天 在 Windows 上配置 SQLite環境 EasySQLite項目源碼地址 GitHub地址&#xff1a;https://github.com/YSGStudyHards/EasySQLite&…

第一百七十六回 如何創建漸變色邊角

文章目錄 1. 概念介紹2. 實現方法3. 代碼與細節3.1 示例代碼3.2 代碼細節 4. 內容總結 我們在上一章回中介紹了"如何創建放射形狀漸變背景"相關的內容&#xff0c;本章回中將介紹"如何創建漸變色邊角".閑話休提&#xff0c;讓我們一起Talk Flutter吧。 1.…

2023-11-22 LeetCode每日一題(網格中的最小路徑代價)

2023-11-22每日一題 一、題目編號 2304. 網格中的最小路徑代價二、題目鏈接 點擊跳轉到題目位置 三、題目描述 給你一個下標從 0 開始的整數矩陣 grid &#xff0c;矩陣大小為 m x n &#xff0c;由從 0 到 m * n - 1 的不同整數組成。你可以在此矩陣中&#xff0c;從一個…

一石激起千層浪,有關奧特曼被炒的消息引發了一場熱烈的討論

在毫無征兆的情況下&#xff0c;OpenAI CEO山姆-奧特曼被炒了。 一石激起千層浪&#xff0c;有關奧特曼被炒的消息引發了一場熱烈的討論。 有人將其看成是一場「宮斗」&#xff0c;有人將其看成是OpenAI的董事會與創始人們的一次糾偏。 無論如何&#xff0c;這樣一件看似并無…

網工內推 | 合資公司網工,CCNP/HCIP認證優先,朝九晚六

01 中企網絡通信技術有限公司 招聘崗位&#xff1a;網絡工程師 職責描述&#xff1a; 1、按照工作流程和指引監控網絡運行情況和客戶連接狀況&#xff1b; 2、確保各監控系統能正常運作&#xff1b; 3、快速響應各個網絡告警事件&#xff1b; 4、判斷出網絡故障&#xff0c;按…

數據要素:數字經濟最核心的資源。(存儲,流通,使用)數據資產的價值量化評估,數據要素的特點

目錄 數據要素:數字經濟最核心的資源。(存儲,流通,使用) 數據資產的價值量化評估

淺談對于Android CMakeLists文件的理解

文章目錄 文件結構 文件結構 cmake_minimum_required(VERSION 3.10.2) //設置cmake版本set(CMAKE_LIBRARY_OUTPUT_DIRECTORY${CMAKE_CURRENT_LIST_DIR}/../jniLibs/${ANDROID_ABI}) //設置.so文件輸出路徑 project("add") //編譯目錄add_library( common //生成.so文…

【Linux虛擬內存的配置】

設置Linux虛擬內存 注意:在做項目時&#xff0c;電腦內存不夠用,怎么辦? 這里給大家提供了一種解決方案,用磁盤換內存,具體如下: 虛擬內存swap介紹 如果你的服務器的總是報告內存不足&#xff0c;并且時常因為內存不足而引發服務被強制kill的話&#xff0c;在不增加物理內…