特性
特点
- 关键字较少(25个)
break | default | func | interface | select |
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
可读性好
性能
- 比较 Go 和 Python 在简单的 web 服务器方面的性能,单位为传输量每秒:
原生的 Go http 包要比 web.py 快 7 至 8 倍 如果使用 web.go 框架则稍微差点,比 web.py 快 6 至 7倍 在 Python 中被广泛使用的 tornado 异步服务器和框架在 web 环境下要比 web.py 快很多 Go 大概只比它快1.2 至 1.5 倍
Go 和 Python 在一般开发的平均水平测试中,Go 要比 Python 3 快 25 倍左右,少占用三分之二的内存,但比 Python 大概多写一倍的代码
根据 Robert Hundt(2011 年 6 月)的文章对 C++、Java、Go 和 Scala,以及 Go 开发团队的反应,可以得出以下结论:
Go 和 Scala 之间具有更多的可比性(都使用更少的代码),而 C++ 和 Java 都使用非常冗长的代码。
Go的编译速度要比绝大多数语言都要快,比 Java 和 C++ 快 5 至 6 倍,比 Scala 快 10 倍。
Go的二进制文件体积是最大的(每个可执行文件都包含 runtime)。
在最理想的情况下,Go 能够和 C++ 一样快,比 Scala 快 2至 3 倍,比 Java 快 5 至 10 倍。
Go 在内存管理方面也可以和 C++ 相媲美,几乎只需要 Scala 所使用的一半,比Java 少 4 倍左右。
Go Tour
- 下面是一个运行在 Google App Engine 上的 Go Tour
安装与运行环境
编译器
支持的操作系统如下
- Linux
- FreeBSD
- Mac OS X
编译器有两种:Go 原生编译器 gc 和非原生编译器 gccgo
其中,gc 版本的编译器已经被移植到 Windows 平台上,并集成在主要发行版中,可以通过安装 MinGW 从而在 Windows 平台下使用 gcc 编译器。
文件扩展名与包(package):
GO扩展名.go。
C 文件使用后缀名 .c,
汇编文件使用后缀名 .s
所有的源代码文件都是通过包(packages)来组织
包含可执行代码的包文件在被压缩后使用扩展名 .a(AR 文档)
环境变量
GOROOT 表示 Go 在你的电脑上的安装位置,它的值一般都是 $HOME/go
GOPATH 默认采用和 GOROOT 一样的值,但从 Go 1.1 版本开始,你必须修改为其它路径。包含三个规定的目录:src、pkg 和 bin,这三个目录分别用于存放源码文件、包文件和可执行文件
- GOPATH允许多个目录,当有多个目录时,请注意分隔符
安装
编辑器
Go包的安装工具
go install 是安装 Go 包的工具,类似 Ruby 中的 rubygems。主要用于安装非标准库的包文件,将源代码编译成对象文件
hello world
package main
func main() {
println("Hello", "world")
}