Go對於初學有2大問題:
1 是依賴的安裝
2 gopath內的目錄結構的處理,因為go依賴的路徑問題,絕對相對路徑,所以這點要很小心處理
最近在學習Go編寫后端服務,先放出謝大的書鎮樓:
https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/preface.md
學習Go的人,第一個要解決的問題,就是安裝依賴,也就是我們用的go get命令,由於你懂得原因,Go安裝依賴總是timeout(獲取超時),就算掛公司的vpn也不行,說個實在話:golang官網都上不去你還想安裝依賴??
國內網絡是可以訪問github.com的,那么用github.com代替golang.org呢?舉個栗子:
go get github.com/micro/micro
我敢保證,不是每次都行得通,有時也timeout,為啥,因為我試過!
后來我去看了這篇文章還有其他文章,結合謝大的書,總結了兩個個解決方案:
https://www.imooc.com/article/45820
方案一:gopm,缺點:慢!優點:自動!
方案二:github.com clone(或者網頁下載)+ src +go install
先跟大家說個知識:
1.會涉及go path和go get的原理,這個自己去看謝大的書,例如我的電腦是mac mini,那么我的默認go工作目錄就是:/users/用戶名/go,其他不多說
2.我們的依賴通常放在 go/src里 (這里的go就是上一行的go路徑,下同),我們進到這個目錄里,在有.go文件的地方,執行go install ,golang就會把src的 .go 編譯成包文件 .a文件,放到同等目錄的go/src中,就是把包文件的目錄放得跟src的一樣,只是src改為pkg
3.代碼
import ( "github.com/micro/go-micro" )
上面的不要以為是會去github.com下載依賴,如果是的話我們還有手動go get獲取依賴干嘛?
好,下面拿我上面要安裝的依賴來試試
go get github.com/micro/micro
我們全程都不必用到 go get
1.去github找到micro的倉庫,下載micro,注意放到 go/src/github.com/micro (注意,因為下載的micro里還有個叫micro的文件夾,所以名字會叫micro/micro)
2.去到micro 里執行install,不同機器報錯不同,例如我的機器缺少的文件數量比較少,結果如下:
我是用vscode哈
好的,這時我們看得出缺了crypto的包,並且是src的而不是pkg的,因此只需要下載源碼放到src就好,而不用go install,那我們就愉快的去github.com下載它的源碼吧!
怎么找?
github搜索 crypto
把里面整個下載下來,迅雷下載可以提速,放到src對應路徑(一般github的路徑如下:github.com/作者github名/倉庫名/具體go文件),需要包時執行install,這個過程要重復幾次,直到收到下完所有的包
順便提一句,由於包依賴太多,樓主已吐血
2019.04.03更新
最近我探索到一種方式,不用開vpn的
首先看問題,如果少源碼,也就是第1.個,就Github找源碼下載放到src相應的目錄中,如果少包,也就是第2.個,不但要下載源碼放到src中,還要去到相應目錄執行go install,但是這樣效率吐血,因為通常a依賴b,b依賴c,c依賴e f g......翻桌子啊!!!
如何解決,就是直接到 項目的根目錄里 先執行go get,效果和nodejs 執行npm install差不多,完了后,get不了的包(一般github都get得下來,就是golang.org或者google網站的包或者說源碼get不下來,那么你就去github搜索包在github的鏡像,手動下載按照前面說的做,放到相應目錄,需要時執行go install,這樣最快,gopm慢到吐血)
1.
cannot find package "github.com/..." in any of: E:\Go\src\github.com...
2.
cannot find package "github.com/..." in any of: K:\go\pkg\github.com\...