1.1 Go 的特点
-
快速编译
-
高效执行
-
易于开发
面向对象
Go 可以按照 OO 的范式变成,但是没有类、继承。而是通过接口进行解耦合。
用途
目前主要用于网络编程。
1.2 Go 的开发
环境变量:
- GOROOT 表示 Go 安装位置,如
$HOME/go
- GOARCH 表示目标机器的处理器架构,如 386、amd64 或 arm。
- GOOS 表示目标机器的操作系统,如 darwin、freebsd、linux 或 windows。
交叉编译时,使用 $GOHOSTOS
和 $GOHOSTARCH
设置本机的 OS 和处理器结构。这样 GOARCH,GOOS 用于在本机编译其它机器目标的可执行文件。
1.3 Go Runtime
Go 运行时负责管理:
- 内存分配
- 垃圾回收
- 栈处理
- goroutine
- channel
- 切片(slice)
- map 和反射(reflection)等。
Go 的垃圾回收
采用标记清除(mark-sweep)算法。从内存空间的根对象出发,多级标记所有子对象。这样未被标记的就是垃圾。