首頁 >常見問題 >Go語言中有依賴的套件嗎

Go語言中有依賴的套件嗎

小老鼠
小老鼠原創
2023-04-17 16:14:551069瀏覽

Go語言中有依賴的包,其安裝依賴包的方法有∶1、使用“go get”命令安裝依賴包;2、開啟“go mod”,然後在工程目錄下使用"“ go get"拉包;3、在github中手動下載依賴包並放到對應的目錄;4、拷貝“GOPATH/pkg/mod”下對應的包;5、直接把程式碼放到工程裡面,然後使用“ go tidy」自動規整套件依賴即可。

Go語言中有依賴的套件嗎

本教學作業系統:Windows10系統、go1.20版、Dell G3電腦.

#Go語言中有依賴的套件。

雖然go現在已經有比較好用的go mod套件管理工具了。但是由於某些不可描述的原因,在安裝依賴時對於新手依舊會有很多問題,一起來看看怎麼解決吧?

Go語言中有依賴的套件嗎

#一、直接go get

從第一天接觸go的套件依賴開始,你的老師或看到的資料都是告訴你:直接go get

這是最原始的安裝方式,能解決大部分套件的依賴問題。

但不是100% 都能安裝成功,例如上面截圖裡面的套件:golang.org/x/crypto/ssh

#直接go get,可能會因為不可描述的原因無法存取到golang.org這個網址,套件就無法安裝成功。

二、設定GOPROXY

go mod是go 1.11 新加的特性。

所以只要go版本大於1.11,就自帶了go mod套件管理。

這是個好東西,如果開啟了go mod

專案裡面初始化了go mod,再在工程目錄下面使用go get拉包會自動使用go mod拉包,並整理到go.mod檔裡。

但是預設使用的來源是國外的,所以安裝依賴套件一般都很慢,或不能成功。

所以需要設定下他們的代理,讓他們從國內的伺服器出去,這樣速度和穩定性都能更好些。

如果使用的是goland可以command ,喚出偏好設置,在裡面設置代理:

Go語言中有依賴的套件嗎

#推薦代理到https://goproxy.cn這個上,七牛雲家的,一直使用,很穩定。

修改好後,記得重新開啟終端機!

如果使用的是其他IDE或命令行,自行百度怎麼設定代理。

設定完成後使用go env可以看到目前go使用到的環境變量,可以用來檢查配置是否OK。

三、使用github

如果上面兩步驟操作後都還不能安裝成功,就得使用非正常手段來安裝依賴了。

套件的引用情況

首先需要理解go本地的套件是怎麼存放,怎麼引用的。

  • 如果是傳統的go get下載的依賴套件會存放在GOPATH/src/網域名稱/套件名稱 下面。
  • 如果是使用的go mod下載的依賴套件會存放在GOPATH/pkg/mod/網域名稱/套件名稱@版本號碼 下面。

所以可以把套件手動下載放到對應的目錄下面即可。

手動下載包

對於github國內並不是完全不能訪問,只是可能會比較慢,或者時常打不開,此時可以碰碰運氣。

官方套件都可以在這個倉庫下面找到:github.com/golang

如何安裝在每個包的README.md裡面都會有描述:

The easiest way to install is to run go get -u http://golang.org/x/net. You can also manually git clone the repository to $GOPATH/src/http://golang.org/x/net.

大部分的依賴套件都能在github裡面找到對應套件。

四、利用人脈

沿用上一個方案的思路,不是所有人都不能科學上網,可以尋求身邊能科學上網的朋友,幫你下載包給你。

然後把GOPATH/pkg/mod下面對應的包拷貝。

五、使用go mod

最後還有一個場景,那就是知道套件名字,透過文件拿到一些範例demo。

直接把程式碼放到工程裡面,然後使用go tidy來自動規則套件依賴。

一些常識

  • 1、套件名稱就是倉庫位址

例如: github.com/gin-gonic/gin

報名大都是代碼所在倉庫位址,大都是可以直接存取的。

  • 2、套件裡面的套件

依賴套件有一個非常好玩的地方,有時使用的套件是套件裡面的套件。

可能有點繞,但很好理解。

例如文章開頭的:golang.org/x/crypto/ssh這個包,

他就是golang.org/x/crypto下面的包。

所以直接安裝ssh包,往往會出現找不到套件的情況,所以你就需要往上一層安裝。

以上是Go語言中有依賴的套件嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn