Go语言包的主要作用就是把功能相似或相关的代码组织在同一个包中。
GOPATH:
Go所有的操作(编码,依赖管理,构建,测试和安装)基本上都是围绕GOPATH进行的,实际开发环境中,需要把所需工程的根目录放到GOPATH中,否则即使处于同一工作区的代码之间也无法通过绝对路径完成调用。换句话说,没有设置GOPATH,程序无法调用。
Linux设置GOPATH:
查看GOPATH环境变量:echo $GOAPTH
设置GOPATH环境变量:
1、修改配置文件/etc/profile 向该文件末尾添加
export GOPATH=$GOPATH:/home/NewProject
2、source命令重新执行刚修改的初始化文件
source /ect/profile
查找依赖包
如果GOPATH设置了多个工作区,在查找依赖包的时候先查找GOROOT目录的src,然后按设置中GOPATH工作区的先后顺序进行查找。
GO111MODULE是一个环境变量,用于改变go引入包的方式
GO111MODULE=on,这个设置会强迫使用Go modules,go get下载的文件会在工作目录的/pkg/mod下面
GO111MOUDLE=off,使用GOPATH的方式,go get下载的文件会在环境变量对应的/src目录下面
GO111MODULE=auto,默认设置。有go.mod,相当于GO111MODULE=on,没有相当于GO111MODULE=off
GOROOT的目的就是告诉Go当前的安装位置,编译的时候从GOROOT去找SDK的system library
GOBIN:若环境变量GOPATH中包含多个工作区的目录路径,执行go install就会失效,必须设置环境变量GOBIN
包的声明:
包中成员以首字母大小写决定访问权限
首字母大写,可以被包外访问,首字母小写,仅包内成员访问
包的导入:
标准包会在go语言的安装位置下的src目录中找到
其他包需要在GOPATH环境变量中的目录下寻找。
远程导入包:go get 命令下载远程包
匿名导入包:目的是为了调用该包的init函数
在Go语言中,如果导入了一个包而不使用,编译会报错,可以引入匿名导入,以下划线_重新命名该包。
import _"fmt" //匿名导入
例如当我们分析一个web应用程序的性能时,导入net/http/pprof