掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
go get 命令可以借助代碼管理工具通過遠(yuǎn)程拉取或更新代碼包及其依賴包,并自動(dòng)完成編譯和安裝。整個(gè)過程就像安裝一個(gè) App 一樣簡(jiǎn)單。

這個(gè)命令可以動(dòng)態(tài)獲取遠(yuǎn)程代碼包,目前支持的有 BitBucket、GitHub、Google Code 和 Launchpad。在使用 go get 命令前,需要安裝與遠(yuǎn)程包匹配的代碼管理工具,如 Git、SVN、HG 等,參數(shù)中需要提供一個(gè)包名。
這個(gè)命令在內(nèi)部實(shí)際上分成了兩步操作:第一步是下載源碼包,第二步是執(zhí)行 go install。下載源碼包的 go 工具會(huì)自動(dòng)根據(jù)不同的域名調(diào)用不同的源碼工具,對(duì)應(yīng)關(guān)系如下:
BitBucket (Mercurial Git)
GitHub (Git)
Google Code Project Hosting (Git, Mercurial, Subversion)
Launchpad (Bazaar)
所以為了 go get 命令能正常工作,你必須確保安裝了合適的源碼管理工具,并同時(shí)把這些命令加入你的 PATH 中。其實(shí) go get 支持自定義域名的功能。
參數(shù)介紹:
Go語(yǔ)言的代碼被托管于 Github.com 網(wǎng)站,該網(wǎng)站是基于 Git 代碼管理工具的,很多有名的項(xiàng)目都在該網(wǎng)站托管代碼。其他類似的托管網(wǎng)站還有 code.google.com、bitbucket.org 等。
這些網(wǎng)站的項(xiàng)目包路徑都有一個(gè)共同的標(biāo)準(zhǔn),參見下圖所示。
圖:遠(yuǎn)程包路徑格式
圖中的遠(yuǎn)程包路徑是 Go語(yǔ)言的源碼,這個(gè)路徑共由 3 個(gè)部分組成:
默認(rèn)情況下,go get 可以直接使用。例如,想獲取 go 的源碼并編譯,使用下面的命令行即可:
$ go get github.com/davyxu/cellnet
獲取前,請(qǐng)確保 GOPATH 已經(jīng)設(shè)置。Go 1.8 版本之后,GOPATH 默認(rèn)在用戶目錄的 go 文件夾下。
cellnet 只是一個(gè)網(wǎng)絡(luò)庫(kù),并沒有可執(zhí)行文件,因此在 go get 操作成功后 GOPATH 下的 bin 目錄下不會(huì)有任何編譯好的二進(jìn)制文件。
需要測(cè)試獲取并編譯二進(jìn)制的,可以嘗試下面的這個(gè)命令。當(dāng)獲取完成后,就會(huì)自動(dòng)在 GOPATH 的 bin 目錄下生成編譯好的二進(jìn)制文件。
$ go get github.com/davyxu/tabtoy
使用 go get 時(shí)可以配合附加參數(shù)顯示更多的信息及實(shí)現(xiàn)特殊的下載和安裝操作,詳見下表所示。
| 附加參數(shù) | 備 注 |
|---|---|
| -v | 顯示操作流程的日志及信息,方便檢查錯(cuò)誤 |
| -u | 下載丟失的包,但不會(huì)更新已經(jīng)存在的包 |
| -d | 只下載,不安裝 |
| -insecure | 允許使用不安全的 HTTP 方式進(jìn)行下載操作 |

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流