Skip to the content.

环境变量

$GOROOT : Go的安装根目录

$GOPATH : Go语言编程的工作目录

$GOBIN :带有main函数的源程序执行go install 时生成的可执行程序安装目录,默认是$GOPATH/bin

$GOOS: 设置目标操作系统

$GOARCH :设置目标平台的CPU体系结构

作用域

Go语言有三种类型作用域:

变量覆盖:

里层的局部变量能覆盖外层变量,使得外层同名变量不可见。

包的引用路径有两种写法:

全路径引用: 包的绝对路径是$GOROOT/srcGOPATH/src 后面包的源码的全路径,标准包只能使用全路径引用。

相对路径引用: 只适用于引用$GOPATH 下的包

包引用格式:

注意:

  1. 一个包可以有多个init函数,包加载会执行全部的init函数,但不能保证执行顺序,所以不建议在一个包中放入多个init函数
  2. 包不能出现环形引用
  3. 包重复引用是允许的。编译器会保证d的init函数只会执行一次

go包的初始化:

  1. 包初始化程序从main函数引用的包开始,逐级查找包的引用,直到找到没有引用其他包的包,最终生成一个包引用的有向无环图
  2. go编译器会把有向无环图转换为一颗树,然后从树的叶子节点开始逐层向上对包进行初始化。
  3. 单个包初始化时先初始化常量,然后是全局变量,最后执行包的init函数