go的目录结构pkg
src: 源碼文件
bin: 編譯生成的而可執(zhí)行文件
pkg: 平臺相關(guān)目錄(目標(biāo)操作系統(tǒng)目錄),編譯后生成的文件
pkg:保存歸檔文件(擴展名為 .a 的文件,即 archive 文件)這是程序編譯后生成的靜態(tài)庫文件。
注意:在 pkg 下實際上還有一個平臺相關(guān)目錄(目標(biāo)操作系統(tǒng)對應(yīng)的目錄),所有的歸檔文件都在這個目錄下
當(dāng)前出現(xiàn)了三個子目錄
[root@localhost pkg]# ls linux_amd64 mod sumdb第一個目錄 linux_amd64
因為該go環(huán)境是在Linux系統(tǒng)上運行的
//這個一個與平臺相關(guān)的目錄,即操作系統(tǒng)對應(yīng)的目錄 [root@localhost ligato]# pwd /root/go/pkg/linux_amd64/github.com/ligato [root@localhost ligato]# ls vpp-agent.a第二個目錄 mod
[root@localhost mod]# ls 9fans.net cloud.google.com github.com golang.org google.golang.org go.starlark.net@v0.0.0-20200821142938-949cc6f4b097 go.uber.org mvdan.cc cache git.fd.io go.etcd.io go.ligato.io gopkg.in gotest.tools@v2.2.0+incompatible honnef.co sigs.k8s.io開啟GO11MODULE=on 后,go get 安裝的包將到 go/pkg下
go get -m [packages]會將下載的依賴包放到GOPATH/pkg/mod目錄下,
并且將依賴寫入到go.mod文件.
go get -u=patch會更新主模塊下的所有依賴包。
Go 1.11版本支持臨時環(huán)境變量GO111MODULE,通過該環(huán)境變量來控制依賴包的管理方式。
-
當(dāng)GO111MODULE的值為on時
那么就會使用modules功能.
這種模式下,GOPATH不再作為build時導(dǎo)入的角色,依賴包會存放在GOPATH不再作為build時導(dǎo)入的角色,依賴包會存放在GOPATH不再作為build時導(dǎo)入的角色,依賴包會存放在GOPATH/pkg/mod目錄下。
工程中的依賴包也會從此目錄下查找。 -
GO111MODULE=off時
go命令行將不會使用新的module功能,它將會在vendor目錄下和GOPATH目錄中查找依賴包。
這種模式叫GOPATH模式。
使用順序為:
- GO111MODULE=auto時
包引入的路徑可以混合使用.
第三個目錄 sumdb
[root@localhost sumdb]# ls sum.golang.orgGOSUMDB
它的值是一個 Go checksum database,用于在拉取模塊版本時(無論是從源站拉取還是通過 Go module proxy 拉取)
保證拉取到的模塊版本數(shù)據(jù)未經(jīng)過篡改,若發(fā)現(xiàn)不一致,也就是可能存在篡改,將會立即中止。
GOSUMDB的默認值為:sum.golang.org,在國內(nèi)也是無法訪問的,但是 GOSUMDB 可以被 Go 模塊代理所代理(詳見:Proxying a Checksum Database)。
因此我們可以通過設(shè)置 GOPROXY 來解決,而先前我們所設(shè)置的模塊代理 goproxy.cn 就能支持代理 sum.golang.org,所以這一個問題在設(shè)置 GOPROXY 后,你可以不需要過度關(guān)心。
總結(jié)
以上是生活随笔為你收集整理的go的目录结构pkg的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓嵌入式开发教程!Android开发热
- 下一篇: 在深圳转户口这件小事