【Golang學習筆記】入門:環境變數與Package
Golang入門學習
環境變數
Golang的環境變數有GOROOT和GOPATH
GOROOT
GOROOT是Golang的安裝路徑,以mac為例,通過Homebrew安裝好的Golang之後,可以配置區域性環境變數。
export GOROOT=/usr/local/go
GOPATH
GOPATH是作為編譯後二進位制的存放目的地和import包時的搜尋路徑,也就是自己建立Golang專案的工作目錄。GOPATH是go命令常常需要用到的,如go run,go install, go get等執行的目標路徑,這些命令所操作的目錄,就是GOPATH。
GOPATH之下主要包含三個目錄:
.(GOPATH) ├── bin │ └── initdb ├── pkg │ └── darwin_amd64 └── src ├── README.md ├── code ├── conf ├── github.com ├── go.opentelemetry.io ├── golang.org ├── google.golang.org ├── gopkg.in ├── gpool ├── httpserver ├── initdb.go ├── install.sh ├── logs ├── proto ├── rpcclient ├── tcpserver └── utils
bin目錄主要存放可執行檔案; pkg目錄存放編譯好的中間庫檔案,主要是*.a檔案; src目錄下主要存放go的原始檔(如.go .c .h .s等)。
在開發過程中,如果需要引用到其他的專案,使用import "github.com/jinzhu/gorm"
,將會引用到$GOPATH/src/github.com/jinzhu/gorm
這個專案。go get
命令所對應的效果就是給所選擇的專案引入遠端的包,可以理解為引入依賴。
以某個專案為例,其結構如下
而對於某個專案中,若有package main
,則這個go檔案是主檔案,將會被編譯執行。
全域性GOPATH與專案GOPATH
應該為每個專案都設定一個單獨的GOPATH,這樣專案在引用包的時候,會首先在GOROOT/src
fmt
輸入輸出包,當無法找到的時候,會尋找PROJECT GOPATH/src
,如果還是無法找到,將會尋找GLOBAL GOPATH/src
,這樣一來,我們就可以將一些通用的包放入全域性目錄中,其餘的自行定義。既保證了專案檔案的整潔,也保證了編譯的正確性。
使用go env
命令可以檢視GOROOT和全域性GOPATH:
$ go env
...
GOPATH="/Users/jinchenglv/go"
GOROOT="/usr/local/go"
...
建立專案
mkdir gotest
cd gotest
touch hello.go
在hello.go
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界!")
}
有兩種方式執行:
- 在專案根目錄下執行
go build
構建專案,會生成一個hello
檔案;執行生成的./hello
,終端打印出Hello, 世界!
- 直接執行命令
go run hello.go
來執行程式
Golang的包Package
與Python、Java等語言不同,在Golang中,import匯入的是目錄,而不是包名。而且,Golang沒有強制要求包名和目錄名需要一致。這一部分的介紹可以參考[Go] 路徑、目錄名、包名、檔名。
Golang中使用import引入其他的包。編譯器導包的順序如下:
GOROOT->專案所對應的GOPATH->全域性GOPATH
如果都無法找到,編譯器將會報錯。
Reference
- go環境變數配置 (GOROOT和GOPATH).https://www.jianshu.com/p/4e699ff478a5
- Golang入門(1):安裝與配置環境變數的意義.https://juejin.im/post/5e899860518825737d49cdc6