Golang入門(1):安裝與配置環境變量的意義


摘要

在幾年前學習Java的時候,環境的配置就會勸退一部分的初學者。而對於Golang來說,也需要從環境的配置開始學起。這一篇文章將從如何安裝Golang開始講起,隨后將會提到Golang中的環境變量GOROOT和GOPATH的配置以及這兩個環境變量起到什么樣的效果。
下面開始:

安裝

和其他語言的安裝類似,golang的安裝我們也可以采用三種方式進行,從簡單到復雜依次是通過可執行文件的安裝、官方二進制包安裝和源碼編譯安裝。

我們可以在這里獲取最新版本的go安裝文件。

在這里解釋一下,其實二進制文件的安裝和可執行文件的安裝方式是一樣的,但是在Windows中通過可執行文件來安裝會自動配置GOROOT環境變量,更加省事而已。

在這里以Windows為例,其他系統的安裝請查看官方文檔所介紹的安裝方式:

對於Windows用戶,可以選擇MSI安裝程序或ZIP包:

MSI安裝

打開所下載的MSI文件,並跟隨提示來安裝Go工具。默認情況下,該安裝程序會將Go發行版放到 C:\Go 中。

此安裝程序應該會將 C:\Go\bin 目錄放到你的 PATH 環境變量中。

完成。

ZIP文件安裝

下載ZIP文件並解壓(這里假設已經解壓到了C:\Go中):

將你的Go根目錄中的 bin 子目錄(例如 C:\Go\bin)添加到你的 PATH 環境變量中,如圖:

配置環境變量

測試

在命令行中,輸入

go version

你將可以看到自己所安裝的go版本,如圖:

go版本

環境變量

GOROOT

不知道大家有沒有考慮過一個問題,我們為什么需要配置環境變量。

環境變量是在操作系統中一個具有特定名字的對象,它包含了一個或者多個應用程序所將使用到的信息。例如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這個命令,而不需要寫完整的絕對路徑,也是因為他已經被加入了系統的環境變量中:

git絕對路徑

GOPATH

GOPATH也被稱為Golang的工作目錄。它分為兩種,一種是全局GOPATH,另一種是項目對應的GOPATH,聽起來有點繞,我們下面在進行詳細的解釋。

總的來說,GOPATH是go命令常常需要用到的,如go rungo installgo get等執行的目標路徑,這些命令所操作的目錄,就是GOPATH。

再說說GOPATH包含了有哪些結構:

.(GOPATH的路徑)
├── bin
├── pkg
└── src
  • src存放的是我們的我們項目的源代碼(比如:.go .c .h .s等)
  • pkg編譯時生成的中間文件(比如:.a)
  • bin編譯后生成的可執行文件

在Golang的項目中,所有的源碼都是放在/src中,一般的做法是一個目錄一個項目。

也就是說,在開發過程中,如果需要引用到其他的項目,使用import "xxx",將會引用到$GOPATH/src/xxx這個項目,我們可以將這里的src聯想為Java開發中的Maven倉庫,src內是一個個依賴。go get命令所對應的效果就是給所選擇的項目引入遠程的包,可以理解為引入依賴。而對於某個項目中,若有package main,則這個go文件是主文件,將會被編譯運行。

全局GOPATH與項目GOPATH

然而,我們都知道,在我們開發Java項目的時候,項目的位置和Maven Repository位置是不同的。而在上面的設置中,顯然我們的項目和我們引入的其他包寫在了一塊,這樣顯得不夠優雅,而且可能會因為引用的錯誤,導致一些編譯時的奇奇怪怪的錯誤。

所以,我們應該為每個項目都設置一個單獨的GOPATH。這樣,項目在引用包的時候,會首先在GOROOT/src中尋找,例如fmt輸入輸出包,當無法找到的時候,會尋找PROJECT GOPATH/src,如果還是無法找到,將會尋找GLOBAL GOPATH/src,這樣一來,我們就可以將一些通用的包放入全局目錄中,其余的自行定義。既保證了項目文件的整潔,也保證了編譯的正確性。

如何設置/修改GOPATH

對於全局GOPATH,我們可以用go env命令查看當前的全局GOPATH:

查看GOPATH
可以看到,此時的GOPATH為D:\Go_path。然而,如果用戶不進行設置,GOPATH是有一個默認值的:

平台 GOPATH默認值 舉例
Windows %USERPROFILE%/go C:\Users\用戶名\go
Unix $HOME/go /home/用戶名/go

也就是說,只需要用戶在需要的地方設置一個目錄,並且將該目錄加到環境變量中,並且名為GOPATH,那么就可以將這個目錄設置為GOPATH了:

GOPATH設置

注意,有些用戶可能會出現創建了文件夾,也添加了環境變量,但是卻無法修改GOPATH的情況

這是因為只創建了gopath的文件夾,但是這個文件夾里面不包含srcpkgbin文件夾,所以go無法將這個文件夾識別為GOPATH路徑。

GOPATH文件組成
所以,一定要在你添加的GOPATH路徑中加入這三個文件夾,GOPATH的修改才能生效。

寫在最后

首先,謝謝各位可以看到這里(鞠躬

作者其實是一個Java開發者,目前也剛剛開始接觸Golang這門年輕的語言,想要通過博客的形式,一方面更好的消化所學到的知識,另一方面也希望可以將自己的看法與大家分享,大家一起共同進步(奧利給!

當然,因為作者才識疏淺,肯定有很多疏漏或者認識錯誤的地方,如果你在本文中發現了與你認識相違背的地方,或者有哪里是作者說的比較含糊不夠清晰的地方,請不吝指教交流(再次鞠躬!

最后,再次感謝~

PS:如果有其他的問題,也可以在公眾號找到作者。並且,所有文章第一時間會在公眾號更新,歡迎來找作者玩~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM