3.1. 简介

Go是一个开源项目,采用BSD授权协议。 该文档介绍如何获取Go源代码,如何编译,以及如何运行Go程序。

目前有两种方式使用Go语言。这里主要讲述如何使用Go专用的gc系列工具 (6g、8g等)。另一个可选的编译器是 基于gcc后端的 gccgo编译器。关于gccgo的细节清参考安装并使用gccgo编译器

Go编译器可以支持三种指令集。不同体系结构生成的代码质量有一些差别:

amd64 (a.k.a. x86-64); 6g,6l,6c,6a

最成熟的实现,编译器在寄存器级别优化,可以生成高质量的目标代码(有时候gccgo可能更优)。

386 (a.k.a. x86 or x86-32); 8g,8l,8c,8a

amd64平台的的完整移植。

arm (a.k.a. ARM); 5g,5l,5c,5a

在完善中。目前只支持生成Linux的二进制文件,浮点支持比较匮乏,并且生成目标代码时还存在bug。还没有完全通过测试集,也没有任何优化。

除了系统级的接口,go需要的运行时环境对各个平台都是一致的。包含 mark-and-sweep 垃圾内存自动回收(更高效的算法实现正在开发中), 数组、字符串、智能堆栈 以及 goroutine 等。

目前支持以下系统:FreeBSD、Linux、Native Client 和 OS X (a.k.a. Darwin)。Microsoft Windows 目前正在移植中, 功能还不完整。关于各个系统平台的详细说明,可以参考后面的 [环境变量] 一节。