在幾年前學習Java的時候,環境的配置就會勸退一部分的初學者。而對於Golang來講,也須要從環境的配置開始學起。這一篇文章將從如何安裝Golang開始講起,隨後將會提到Golang中的環境變量GOROOT和GOPATH的配置以及這兩個環境變量起到什麼樣的效果。
下面開始:html
和其餘語言的安裝相似,golang的安裝咱們也能夠採用三種方式進行,從簡單到複雜依次是經過可執行文件的安裝、官方二進制包安裝和源碼編譯安裝。python
咱們能夠在這裏獲取最新版本的go安裝文件。git
在這裏解釋一下,其實二進制文件的安裝和可執行文件的安裝方式是同樣的,可是在Windows中經過可執行文件來安裝會自動配置GOROOT環境變量,更加省事而已。golang
在這裏以Windows爲例,其餘系統的安裝請查看官方文檔所介紹的安裝方式:併發
對於Windows用戶,能夠選擇MSI安裝程序或ZIP包:工具
打開所下載的MSI文件,並跟隨提示來安裝Go工具。默認狀況下,該安裝程序會將Go發行版放到 C:\Go 中。學習
此安裝程序應該會將 C:\Go\bin 目錄放到你的 PATH 環境變量中。測試
完成。操作系統
下載ZIP文件並解壓(這裏假設已經解壓到了C:\Go中):命令行
將你的Go根目錄中的 bin 子目錄(例如 C:\Go\bin)添加到你的 PATH 環境變量中,如圖:
在命令行中,輸入
go version
你將能夠看到本身所安裝的go版本,如圖:
不知道你們有沒有考慮過一個問題,咱們爲何須要配置環境變量。
環境變量是在操做系統中一個具備特定名字的對象,它包含了一個或者多個應用程序所將使用到的信息。例如Windows和DOS操做系統中的path環境變量,當要求系統運行一個程序而沒有告訴它程序所在的完整路徑時,系統除了在當前目錄下面尋找此程序外,還應到path中指定的路徑去找。用戶經過設置環境變量,來更好的運行進程。
這是百度百科中對於環境變量的定義,也就是說,環境變量是爲了方便咱們更好的運行某個程序,加入到系統環境變量中的程序,將能夠在命令行中直接執行,而不須要咱們用絕對路徑來執行。好比咱們在使用golang的過程當中,經常用到go get
等;在使用python的過程當中,經常用到pip install
等,在使用Git的時候,須要使用git clone
等。用GO舉個例子:
若是咱們須要查看go的版本,咱們一般是在命令行中輸入go version
,其實在這裏這行命令的所有內容是:
C:\Go\bin\go.exe version
也就是說,操做系統會把加入了環境變量的全部程序,建立了一個相似於快捷方式的路徑,使用戶的訪問能夠更加的方便快捷。不管是GO語言,仍是其餘的語言,都是如此,像咱們經常使用的git,爲何咱們能直接打git xxx
這個命令,而不須要寫完整的絕對路徑,也是由於他已經被加入了系統的環境變量中:
GOPATH也被稱爲Golang的工做目錄。它分爲兩種,一種是全局GOPATH,另外一種是項目對應的GOPATH,聽起來有點繞,咱們下面在進行詳細的解釋。
總的來講,GOPATH是go命令經常須要用到的,如go run
,go install
, go get
等執行的目標路徑,這些命令所操做的目錄,就是GOPATH。
再說說GOPATH包含了有哪些結構:
.(GOPATH的路徑) ├── bin ├── pkg └── src
在Golang的項目中,全部的源碼都是放在/src中,通常的作法是一個目錄一個項目。
也就是說,在開發過程當中,若是須要引用到其餘的項目,使用import "xxx"
,將會引用到$GOPATH/src/xxx這個項目,咱們能夠將這裏的src聯想爲Java開發中的Maven倉庫,src內是一個個依賴。go get
命令所對應的效果就是給所選擇的項目引入遠程的包,能夠理解爲引入依賴。而對於某個項目中,如有package main
,則這個go文件是主文件,將會被編譯運行。
然而,咱們都知道,在咱們開發Java項目的時候,項目的位置和Maven Repository位置是不一樣的。而在上面的設置中,顯然咱們的項目和咱們引入的其餘包寫在了一塊,這樣顯得不夠優雅,並且可能會由於引用的錯誤,致使一些編譯時的奇奇怪怪的錯誤。
因此,咱們應該爲每一個項目都設置一個單獨的GOPATH。這樣,項目在引用包的時候,會首先在GOROOT/src
中尋找,例如fmt
輸入輸出包,當沒法找到的時候,會尋找PROJECT GOPATH/src
,若是仍是沒法找到,將會尋找GLOBAL GOPATH/src
,這樣一來,咱們就能夠將一些通用的包放入全局目錄中,其他的自行定義。既保證了項目文件的整潔,也保證了編譯的正確性。
對於全局GOPATH,咱們能夠用go env
命令查看當前的全局GOPATH:
能夠看到,此時的GOPATH爲D:\Go_path
。然而,若是用戶不進行設置,GOPATH是有一個默認值的:
平臺 | GOPATH默認值 | 舉例 |
---|---|---|
Windows | %USERPROFILE%/go | C:\Users\用戶名\go |
Unix | $HOME/go | /home/用戶名/go |
也就是說,只須要用戶在須要的地方設置一個目錄,而且將該目錄加到環境變量中,而且名爲GOPATH,那麼就能夠將這個目錄設置爲GOPATH了:
注意,有些用戶可能會出現建立了文件夾,也添加了環境變量,可是卻沒法修改GOPATH的狀況
這是由於只建立了gopath的文件夾,可是這個文件夾裏面不包含src
,pkg
,bin
文件夾,因此go沒法將這個文件夾識別爲GOPATH路徑。
因此,必定要在你添加的GOPATH路徑中加入這三個文件夾,GOPATH的修改才能生效。
首先,謝謝各位能夠看到這裏(鞠躬
做者實際上是一個Java開發者,目前也剛剛開始接觸Golang這門年輕的語言,想要經過博客的形式,一方面更好的消化所學到的知識,另外一方面也但願能夠將本身的見解與你們分享,你們一塊兒共同進步(奧利給!
固然,由於做者才識疏淺,確定有不少疏漏或者認識錯誤的地方,若是你在本文中發現了與你認識相違背的地方,或者有哪裏是做者說的比較含糊不夠清晰的地方,請不吝指教交流(再次鞠躬!
最後,再次感謝~
PS:若是有其餘的問題,也能夠在公衆號找到做者。而且,全部文章第一時間會在公衆號更新,歡迎來找做者玩~