1. 程式人生 > 實用技巧 >【Golang學習筆記】入門:環境變數與Package

【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, 世界!")
}

有兩種方式執行:

  1. 在專案根目錄下執行go build構建專案,會生成一個hello檔案;執行生成的./hello,終端打印出Hello, 世界!
  2. 直接執行命令go run hello.go來執行程式

Golang的包Package

與Python、Java等語言不同,在Golang中,import匯入的是目錄,而不是包名。而且,Golang沒有強制要求包名和目錄名需要一致。這一部分的介紹可以參考[Go] 路徑、目錄名、包名、檔名
Golang中使用import引入其他的包。編譯器導包的順序如下:
GOROOT->專案所對應的GOPATH->全域性GOPATH
如果都無法找到,編譯器將會報錯。



Reference

  1. go環境變數配置 (GOROOT和GOPATH).https://www.jianshu.com/p/4e699ff478a5
  2. Golang入門(1):安裝與配置環境變數的意義.https://juejin.im/post/5e899860518825737d49cdc6