親測GO環境搭建,理解go build、go install、go get

來源:互聯網
上載者:User
前言: 秉承著作為一個新人,要有著“指哪打哪”的覺悟。在老大的需求下,頂上前端的空缺先幹陣子前端。當然,在工作之餘還是要好好朝著既定的方向努力的,實習結束後還了電腦,這次畢業再來換了新Mac,重新搭下Go的環境,順便好好總結下,以後隨著學習的深入,也會持續更新。 GO下載: GO語言中文網下載: https://studygolang.com/dl Mac下直接通過brew instatll go指令即可完成下載安裝 GO環境變數配置: $GOROOT=/usr/local/go                        GO安裝目錄 $GOPATH=/usr/local/var/www/go          GO工作目錄 $GOBIN=$GOPATH/bin                          GO可執行檔目錄 $PATH=$PATH:$GOBIN:$GOROOT/bin  將GO可執行檔加入PATH中,使GO指令與我們編寫的GO應用可以全域調用
$GOPATH工作目錄結構,約定有三個子目錄(需要自行建立): src ——存放原始碼檔案 pkg——存放編譯後的檔案 bin ——存放編譯後的可執行檔 樣本(首先使用go推薦的go build方式構建應用,稍後會說到其他的方式): 通過我們的操作,在最終測試成功後,$GOPATH的分類樹應該如下所示:

具體操作如下: 1、建立應用程式套件mypkg:切到【$GOPATH/src】目錄下,建立一個mypkg目錄,在mypkg目錄下,建立一個hello.go,內容如下:

2、編譯應用程式套件(在此Demo中,此步驟並不必要,在此只是為了展示go install編譯效果):在剛剛的目錄下執行【go install】指令或者在任意目錄下執行【go install mypkg】指令,如果代碼有錯或依賴找不到會報錯,如果正確則沒有任何提示。此時,你可以切到【$GOPATH/pkg】目錄下,會發現多了一個名為【$GOOS_$GOARCH】的目錄,切進該目錄,就會看到剛剛編譯產生的檔案mypkg.a檔案。(其中$GOOS與$GOARCH的具體值可以通過【go env】指令查詢,更多詳情可參看: http://wiki.jikexueyuan.com/project/go-command-tutorial/0.14.html)

3、建立新應用程式套件myapp,建立新檔案main.go(同步驟1),import引入mypkg包,內容如下:

4、構建可執行檔:在myapp目錄下,使用【go build】指令,會在目前的目錄下產生一個myapp的可執行檔,這個可執行檔不依賴其他檔案,複製到任何目錄下都可通過【./myapp】執行,複製到任何$PATH配置的目錄中都可通過【myapp】全域執行。


總結:我們在這個Demo裡主要用到了兩個GO指令,【go install】與【go build】,他們的區別如下: 【go build】指令的作用是:在目前的目錄下編譯產生可執行檔。注意,go build指令會調用所有引用包的源碼,重新編譯,而不是直接使用pkg裡的編譯後檔案,如果在【$GOROOT】與【$GOPATH】下沒有找到import引入包的項目源碼,就會報錯。在本demo裡,main.go中import引入了"mypkg"包,如果我刪除【$GOPATH/src/mypkg】源碼,執行【go build】指令,會報錯如下:
【go install】指令的作用是:編譯原始碼,如果為可執行檔(package "main"且包含main方法),則會編譯產生可執行檔到【$GOPATH/bin】目錄下;可執行檔import引入的其他包,就會被編譯到【$GOPATH/pkg/$GOOS_$GOARCH】目錄下。 (關於go的匯入和編譯,如果有不清楚的,可以看下這篇部落格 https://studygolang.com/articles/3189)
我們會發現:【go install】也可以完成類似【go build】的功能,區別在於【go install】會產生二進位檔案到【$GOPATH/pkg/$GOOS_$GOARCH】目錄下(這個二進位檔案對於我們並沒什麼意義),但【go install】會把可執行檔自動產生到【$GOBIN】目錄下,這是在一開始被配置到【$PATH】中了,這樣就可以使項目可執行檔能被方便的全域調用。
如果在本Demo中,使用【go install】構建可執行檔: 我們編寫好原始碼檔案時,分類樹如下:
切到myapp目錄下,執行【go install】指令,會產生如下結構分類樹:
此時就可以通過【myapp】全域執行了。 其他指令: go env指令可檢查go環境
go version查看go版本
go get可以暫時理解為git clone到【$GOPATH/src】 + go install

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.