- 在 http://godoc.org 搜索包
-
Go 语言编译快是因为:
-
所有的导入都必须在每一个源文件的开头显式列出,编译器在确定依赖性的时候不需要读取和处理整个文件。
-
包的依赖性形成有向无环图,没有环,包可以独立甚至并行编译。
-
Go 包编译输出的目标文件不仅记录她自己的导出信息,还记录它所依赖包的导出信息。
-
-
导入路径是包的唯一字符串标识,用在 import 声明中
-
除了标准库中的包,其他包的导入路径应该以互联网域名作为路径开始
-
每个 go 源文件开头都要进行包声明,作为该包被其他包引入时的默认标识符。通常包名是导入路径的最后一段。
-
最后一段的例外:
-
不管包的导入路径是什么,如果包定义一个可执行Go程序,那包名总是 main
-
如果目录中有以 _test.go 结尾的文件名,这样的目录有两个包,一个普通包,一个测试包。
-
有的管本管理工具会在导入路径追加版本号后缀: "gopkg.in/yaml.v2"。包名不含后缀,所以仍为 yaml
-
-
如果需要导入两个名字名字一样的包,需要重命名导入, 替代的名字仅影响当前文件:
import ( "crypto/rand" mrand "math/rand" )
-
重命名导入也可用于简化冗长的包名,或者规避常见的局部变量冲突
-
导入包时,如果只对包级别的变量执行初始化表达式并执行它的 init 函数时,使用空导入
-
空导入通常用于注册被导入包内的函数或加载包中提供的驱动
-
包名使用简短的名字,保持可读性和无歧义,使用复数形式避免预声明类型
-
使用包名 + 成员名的组合描述成员作用
- 用 go help 查看内置文档的索引
-
GOPATH 环境变量指定工作空间的根。更新 GOPATH 变量来切换到不同的工作空间。
-
GOPATH 下有三个子目录:src 包含源文件,pkg 存储编译后的包,bin 包含可执行程序。
-
GOROOT 是 Go发行版的根目录,包含标准库的包。
-
go env 命令输出环境变量
-
用 go get 下载和编译包。加上 -u 升级包
-
在项目中用 go mod 管理包
-
go install 类似于 go build,但是会保存包的编译代码和命令在 pkg 和 bin 目录中。
-
设置 GOOS 和 GOARCH 为不同平台和 CPU 架构编译命令。
-
Go 文档注释总是完整的语句。包声明的前面文档注释是整个包的文档注释,可以写在任何源文件中但一个包只能有一个。如果太长可以单独放到 doc.go 中。
-
用 go doc 查询包,成员,方法的文档
-
用 godoc -http :8000 加上 -analysis=type 和 -analysis=pointer 丰富展示的文档内容
-
定义内部包使其可以被一小部分可信任的包访问
-
在包的导入路径中加入"internal", 使其可以从以“internal”父目录为根的包导入
- go list 查询可用包的信息。见 go help list