Datawhale go語言學習 8 包管理

2021-10-12 08:16:49 字數 1697 閱讀 3196

go語言通過包管理來封裝模組和復用**,這裡我們只介紹go modules管理方法

go modules於go語言1.11版本時引入,在1.12版本正式支援,是由go語言官方提供的包管理解決方案

modules是相關go包的集合,是源**交換和版本控制的單元。go命令直接支援使用modules,包括記錄和解析對其他模組的依賴性

8.2.1 環境變數

首先需要設定環境變數,可以使用go env命令檢視當前配置。

$ go env

go111module="auto"

goproxy=""

gonoproxy=""

gosumdb="sum.golang.org"

gonosumdb=""

goprivate=""

如果需要更改 go111module ,可以使用go env命令

go env -w go111module=on
go111module

goproxy

此環境變數主要用於設計go module的**

gosumdb

此環境變數用於在拉取模組的時候保證模組版本資料的一致性。

8.2.2 初始化模組

go modules的使用方法比較靈活,在目錄下包含go.mod檔案即可

首先通過如下命令建立乙個新的module

go mod init [module name]
然後當前目錄會生成go.mod檔案,其內容為:

module modulename

go 1.15

go modules會自動管理包,如果需要引入依賴,只需要在go.mod下新增以下內容(以gorose為例子)

go get命令用於拉取新的依賴,以下為go get命令具體用法

go get

拉取依賴,會進行指定性拉取(更新),並不會更新所依賴的其它模組。

go get -u

更新現有的依賴,會強制更新它所依賴的其它全部模組,不包括自身。

go get -u -t ./…

更新所有直接依賴和間接依賴的模組版本,包括單元測試中用到的。

其他引數

-f 只有在你包含了 -u 引數的時候才有效,不讓 -u 去驗證 import 中的每乙個都已經獲取了,這對於本地 fork 的包特別有用

-fix 在獲取原始碼之後先執行 fix,然後再去做其他的事情

-u 強制使用網路去更新包和它的依賴包

-v 顯示執行的命令

8.2.4 常用命令

go mod init  // 初始化go.mod

go mod tidy // 更新依賴檔案

go mod vendor // 將依賴轉移至本地的vendor檔案

go mod edit // 手動修改依賴檔案

go mod graph // 檢視現有的依賴結構

go mod verify // 校驗依賴

Datawhale go語言學習 4 字典 字串

go語言的字典 map 型別其實是雜湊表 hash table 的乙個實現。字典用於儲存鍵 元素對 更通俗的說法是鍵 值對 的無序集合。注意,同乙個字典中的每個鍵都是唯一的。如果我們在向字典中放入乙個鍵值對的時候其中已經有相同的鍵的話,那麼與此鍵關聯的那個值會被新值替換。map是一種較為特殊的資料結...

語言學習 Python學習

1.關於識別符號 python 中的識別符號是區分大小寫的。以下劃線開頭的識別符號是有特殊意義的。以單下劃線開頭 foo 的代表不能直接訪問的類屬性,需通過類提供的介面進行訪問,不能用 from import 而匯入 以雙下劃線開頭的 foo 代表類的私有成員 以雙下劃線開頭和結尾的 foo 代表 ...

SQL 語言學習

一.插入刪除索引,測速 declare d datetime set d getdate select from cvtuser select 語句執行花費時間 毫秒 datediff ms,d,getdate update testrelation set dif4 0,dif5 0 drop i...