Golang除提供内置函數外,還提供了各種标準庫,這些标準庫都是用package來組織的。
$GOROOT與$GOPATH
在講package管理之前,需要明确兩個環境變量,$GOROOT和$GOPATH。
$GOROOT
$GOROOT目錄是存放Go内置工具的,包括各種标準庫,比如常用的fmt包、strings包、strconv包等都在這個目錄的子目錄下。隻有指定了$GOROOT,才能順手的使用标準庫。如果沒有指定$GOROOT還import了"fmt",編譯時可能就會報錯,因為編譯器不知道fmt的位置。
我的$GOROOT目錄是/usr/local/go。
該目錄下有以下内容:
一般标準庫源碼都存放在src目錄裡,咱進去看看都有啥:
可以看到sort包、time包、fmt包、strconv包、strings包等一些常用的包。當然我們進入這些目錄,就能看到相應包的實作(源碼) 。咱随便看一個:
$GOPATH
$GOPATH目錄就是自己寫的項目所在的根目錄。如果在此目錄下建立一個src目錄,然後在src目錄下寫一些用包管理的自定義工具,就可以直接通過import "包名"來使用自己寫的包了。
這是我的$GOPATH:
我在src目錄下自定義了一個stack包:
這樣我就可以在main.go中直接通過import "stack"的方式來使用stack包。