Golang項目如何引用一個第三方的庫?寫好test.go文件后執行go run test.go的時候報錯,其實是因為golang配置或者自己的項目沒有配置正確。
1、首先,安裝完Golang之后,需要配置一些系統變量,就像Java一樣【這點沒有Python方便,Python是開箱即用】。其中最重要的變量是GOPATH(必須大寫),這個變量是一個目錄的絕對地址,Go語言使用這個目錄進行第三方庫和代碼的管理,對於我們的代碼中引用的第三方包,例如gin等,Go語言系統會去兩個目錄找這個第三方庫,一個是GOROOT變量指向的目錄(也就是Go語言的安裝目錄)下的pkg目錄,一個是GOPATH指向的目錄下的pkg/mod子目錄。若這兩個目錄都找不到第三方庫,就會報錯。
對於Windows系統的配置Go語言變量方法有兩種:
- 一種是使用go env命令,例如go env -w GOPATH=D:\\MyGoPathDIR,env是打印變量,加上-w選項表示寫入,這里是設置GOPATH變量的值為D:\MyGoPathDIR目錄
- 另外一種是設置windows的環境變量,在控制面板里添加一個GOPATH的系統變量,其值設置為D:\MyGoPathDIR,保存即可。
這兩種方法都可以,但當兩種方法設置的同一個變量的值不一致時,go語言系統會優先選擇windows的環境變量。
2、如果是簡單的代碼,不需要引用第三方的包,其實直接寫個xxx.go文件,然后go run xxx.go就可以,但如果需要引用第三方的庫,比如xxx.go引用了gin,那么必須建立工程項目。
- 建立項目的方法是,先建立一個空目錄, 然后在該目錄下執行"go mod init 項目名"的命令,這樣golang會自動在該目錄下生成一個go.mod的文件。然后執行 go run xxx.go時,系統會提示找不到github.com/gin-gonic/gin,然后提示你使用go get命令去下載,你執行go get github.com/gin-gonic/gin命令,就會自動去下載gin,下載下來的文件會保存在GOPATH指向的目錄的pkg/mod子目錄下,go.mod文件的內容也會加上"require github.com/gin-gonic/gin v1.7.2 // indirect" 表示 這個項目依賴下載的github.com/gin-gonic/gin這個項目。你再次執行go run xxx.go時就可以成功執行了
- 這其中golang為什么能自動去下載?這需要我們配置一個系統變量GO111MODULE,把其值設置為on,表示我們啟用了go的module功能(這類似Java的maven功能,就是自動解決第三方依賴的一個工具),就會去自動下載,設置為auto(默認值),go將會根據當前目錄來決定是否啟用module功能。
- 對於國內,我們還可以設置第三個變量GOPROXY來加速這個下載過程,這個變量是指向一個代理服務器,設置GOPROXY=https://goproxy.cn,direct,表示從https://goproxy.cn這個域名(七牛雲)取下載第三方的庫,比直接去github下載更快。
詳情請參考:https://studygolang.com/articles/28712