golang團隊在版本1.13及以後全面支援module機制,用於結束混亂複雜的專案管理機制。同學們可以簡單的將module機制理解成pip、apt-get等包管理工具。
乙個專案(倉庫)包括多個module(模組),乙個模組包括多個package(包),而乙個包含多個**原始檔。
簡單的說,在乙個module中,module機制自動保證匯入所有原始檔中使用的標準庫和第三方包,而不用逐一go get;同時完成版本管理。
假設已安裝golang 1.13或更高版本,則預設開啟module機制,所以可以直接使用module相關的命令。
初始化module
通過go init初始化module後,在該目錄下生成go.mod檔案,用於記錄專案中需要的第三方依賴的名稱和版本;由於專案中可能使用相同依賴的不同版本,所以檔案根據名稱和版本進行區分。
另外會生成go.sum檔案,用於記錄第三方依賴的校驗資訊;當有專案交接、遷移等過程時,新的環境必須和go.sum中的記錄相同。所以當有版本控制時,go.mod和go.sum兩個檔案一定要提交。
$:mkdirgo_module_test && cdgo_module_test
$:gomod init test
go: creating new go.mod: module test
$:catgo.mod
module test #module名稱
go 1.13 #go的版本
匯入第三方依賴
之前通過go get來獲取第三方依賴,而基於module機制,只要在原始碼中進行匯入,通過go run/test/build等命令即可自動獲取並儲存到gopath/pkg下,那gopath是什麼呢?gopath可以認為是工作目錄,在安裝go的時候會有預設值,可以通過命令檢視:
go env | grep gopath
當然可以通過命令更改gopath目錄
go env -w gopath=/***/***/***
例如,在test目錄下編寫如下原始碼並執行:go run main.go
packagemain
import(
"fmt"
"rsc.io/quote")
funcmain()
到這裡其實大家已經可以進行專案開發了,再簡單的介紹幾種命令,可能會用到。
go get:前面提到不需要用go get來獲取第三方依賴,但是module只能自動獲取特定格式的第三方依賴,而對其它非特定格式的第三方依賴依舊需要go get指令。
go get example.com/package //更新第三方依賴go mod tidy:檢查所有依賴,刪除沒有使用的依賴。
自從推出module機制,同學們就能愉快的開發專案啦。
5分鐘入門Lindorm SearchIndex
簡介 searchindex是lindorm寬表的二級索引,主要用來幫助業務實現快速的檢索分析。本篇文章介紹如何通過簡單的sql介面操作searchindex。lindorm對外提供統一的標準sql入口,可以讓開發人員快速上手,輕鬆運維海量資料。searchindex是lindorm寬表的二級索引,...
C 類模板5分鐘入門
參考自 c 除了支援函式模板,還支援類模板 class template 函式模板中定義的型別引數可以用在函式宣告和函式定義中,類模板中定義的型別引數可以用在類宣告和類實現中。類模板的目的同樣是將資料的型別引數化。宣告類模板的語法為 templateclass 類名 類模板和函式模板都是以 temp...
RabbitMQ 輕鬆入門 5分鐘講解
rabbitmq是乙個輕量級的訊息 中介軟體,它支援多種訊息通訊協議,支援分布式部署,同事也支援執行於多個作業系統,它的靈活 高可用特性是它成為流行mq中介軟體的重要因素。它在點到點 發布訂閱的基礎上還加入了中間這亂七八糟的一坨。這一坨是高階訊息佇列的關鍵,可以自由地規劃路線,選擇傳送到哪乙個佇列上...