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