天天看點

Golang包(package)管理$GOROOT與$GOPATH

Golang除提供内置函數外,還提供了各種标準庫,這些标準庫都是用package來組織的。

$GOROOT與$GOPATH

在講package管理之前,需要明确兩個環境變量,$GOROOT和$GOPATH。

$GOROOT

$GOROOT目錄是存放Go内置工具的,包括各種标準庫,比如常用的fmt包、strings包、strconv包等都在這個目錄的子目錄下。隻有指定了$GOROOT,才能順手的使用标準庫。如果沒有指定$GOROOT還import了"fmt",編譯時可能就會報錯,因為編譯器不知道fmt的位置。

我的$GOROOT目錄是/usr/local/go。

Golang包(package)管理$GOROOT與$GOPATH

該目錄下有以下内容:

Golang包(package)管理$GOROOT與$GOPATH

一般标準庫源碼都存放在src目錄裡,咱進去看看都有啥: 

Golang包(package)管理$GOROOT與$GOPATH

可以看到sort包、time包、fmt包、strconv包、strings包等一些常用的包。當然我們進入這些目錄,就能看到相應包的實作(源碼) 。咱随便看一個:

Golang包(package)管理$GOROOT與$GOPATH

$GOPATH

$GOPATH目錄就是自己寫的項目所在的根目錄。如果在此目錄下建立一個src目錄,然後在src目錄下寫一些用包管理的自定義工具,就可以直接通過import "包名"來使用自己寫的包了。

這是我的$GOPATH:

Golang包(package)管理$GOROOT與$GOPATH

我在src目錄下自定義了一個stack包:

Golang包(package)管理$GOROOT與$GOPATH

這樣我就可以在main.go中直接通過import "stack"的方式來使用stack包。