golang 獲取當前包的名稱_golang包管理問題記錄
阿新 • • 發佈:2021-01-30
技術標籤:golang 獲取當前包的名稱
在golang的包管理使用中遇到很多坑,這篇文章用於記錄自己遇到的一些頭痛的問題並做個筆記方便以後查詢
獲取特定版本的golang包
最近在寫一個hbase的SDK,遇到的一個問題是thrift的包不相容問題。Hbase的thrift是使用0.9.x的包編譯出來的,使用其他的版本的thrift會有些許報錯,唯一的辦法是獲取golang的thrift的相應的版本。
最初以為使用可以直接獲取對應的包(沒想到沒有對應的tag)
go get git.apache.org/thrift.git/lib/go/[email protected] # 結果很amazing啊,沒有對應的tag???
現在只能通過commit資訊來下載相應的包。我找到了github上thrift的專案地址,找到golang的路徑(lib/go)
apache/thriftgithub.com然後切換到分支0.9.3.2,找到右上角的commit資訊
然後嘗試了第二次失敗
go get git.apache.org/thrift.git/lib/go/thrift/[email protected]
# 我也不清楚為什麼沒有效果,暫時先不管了,估計有可能是網路問題
可能有小夥伴會覺得明明是github的路徑為什麼get這個包的路徑也不一樣,而且golang有很多類似的情況。這個問題可以看一下官方文件就明白了。
既然這個域名下down不下來,那就換成github該專案的域名再嘗試下
go get github.com/apache/thrift/lib/go/thrift/[email protected]
# 這次是成功的!!!!
但還沒有結束,因為thrift編譯出來的檔案引用的是http://git.apache.org,所以還得再go.mod中替換下包
require git.apache.org/thrift.git v0.9.3 replace git.apache.org/thrift.git v0.9.3 => github.com/apache/thrift v0.0.0-20200208223004-33dcbd08c080
這下就可以引入這個指定的包了。
golang的包管理的具體內容可以看官方文件,這裡只是給一下參考的解決方案的思路和思考的方向。