0-安装与目录说明
Go
的安装比较简单,可参考 官方文档 进行安装,也可参考其它网站:Windows Linux Mac。安装完成之后,其各个目录的含义如下:
目录名 | 说明 |
---|---|
api | 每个版本的 api 变更差异 |
bin | go 源码包编译出的编译器(go)、文档工具(godoc)、格式化工具(gofmt) |
doc | 英文版的 Go 文档 |
lib | 引用的一些库文件 |
misc | 杂项用途的文件,例如 Android 平台的编译、git 的提交钩子等 |
pkg | Windows 平台编译好的中间文件 |
src | 标准库的源码 |
test | 测试用例 |
Go
是编译型的语言,所写的代码可以直接编译成机器码,且 Go
语言不依赖于其它库,这是因为它自身就有很强大的标准库,这些标准库就在 src
这个文件夹中,其涵盖了大部分功能,具体如下:
标准库 | 描述 |
---|---|
bufio | 带缓冲的 I/O 操作 |
bytes | 实现字节操作 |
container | 提供了一些简单的容器实现,比如堆和环形链表 |
context | 提供了上下文传递的功能,通常用于处理请求链中的传递数据 |
crypto | 加密算法 |
database | 数据库驱动和接口 |
debug | 各种调试文件格式访问及调试功能 |
encoding | 常见算法如 JSON、XML、Base64 等 |
errors | 提供了一些处理错误的方法 |
flag | 用于解析命令行参数 |
fmt | 实现格式化输入输出 |
go | Go语言的词法、语法树、类型等。可通过这个包进行代码信息提取和修改 |
hash | 提供一些哈希函数 |
html | HTML 转义及模板系统 |
image | 常见图形格式的访问及生成 |
io | 提供了一些基本的IO操作,比如文件读写和流的操作 |
log | 简单的日志记录功能 |
math | 提供了一些基本的数学函数 |
net | 网络库,支持 Socket、HTTP、邮件、RPC、SMTP 等 |
os | 实现一些基本的操作系统接口 |
path | 兼容各操作系统的路径操作实用函数 |
plugin | 插件系统。支持将代码编译为插件,按需加载 |
reflect | 语言反射支持。可以动态获得代码中的类型信息,获取和修改变量的值 |
regexp | 正则表达式库 |
runtime | 运行时接口 |
sort | 实现对序列的排序操作 |
strings | 实现字符串操作 |
strconv | 实现基本数据类型与字符串之间的转换 |
sync | 提供了一些用于并发编程的原语 |
text | 文本模板及 Token 词法器 |
time | 实现时间和时间间隔相关的操作 |
testing | 提供了单元测试和性能测试的支持 |
当我们的 Go
需要安装一些外部工具,很多都需要魔法,可以参考 GOPROXY.IO 这个网站进行设置即可。
一个 Go
项目一般包含三个子目录:
目录 | 作用 |
---|---|
src | 放置项目和库的源文件 |
pkg | 放置编译后生成的包/库的归档文件 |
bin | 放置编译后生成的可执行文件 |