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)算法。从内存空间的根对象出发,多级标记所有子对象。这样未被标记的就是垃圾。