天天看点

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包。