自己动手写Docker
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 Go

Go 语言又称Golang,是Google开发的一种静态强类型、编译型、并发型并具有垃圾回收功能的编程语言。Go语言在2009年第一次被披露,并在2012年发布了1.0版本,可以说是一门非常年轻的语言。Go语言的创造者可谓众星云集,包括UNIX操作系统和B语言(C语言的前身)的创造者、UTF-8编码的发明者Ken Thompson,UNIX项目的参与者、UTF-8编码的联合创始人和Limbo编程语言(Go语言的前身)的创造者Rob Pike,以及著名的JavaScript引擎V8的创造者Robert Griesemer。

1.2.1 描述

Go语言的语法虽然接近C语言,但还是有一些不同,比如两者对于变量的声明是不同的,且Go语言中的for循环和if判断语句不需要用小括号括起来。Go语言的并行模型是以东尼·霍尔的通信顺序进程(CSP)为基础的,并采取了类似模型的其他语言(包括Occam和Limbo),但它也具有Pi运算的特征,比如通道传输。

与C++相比,Go语言并不包括如异常处理、继承、泛型、断言、虚函数等功能,但增加了slice型、并发、管道、垃圾回收、接口(Interface)等特性的语言级支持。当然,Google对于泛型的态度还是很开放的,但在该语言的常见问题列表中,对于断言的存在,则持负面态度,同时也在为自己不提供类型继承辩护。不同于Java,Go语言内嵌了关联数组(也称为哈希表(Hash)或字典(Dictionary)),就像字符串类型一样。

可以在Go语言官网首页看到一个Go语言的Hello World示例,代码如下。

目前使用Go开发的项目非常多,其中就有国人开发的beego(用来开发Go应用程序的开源框架),另外一个就是大名鼎鼎的Docker。因此,本书会以Go语言代码为示例开发我们自己的Docker应用。

1.2.2 安装Go

本书的开发测试环境如下。

Ubuntu 14.04.

内核版本3.13.0-83-generic。

Go版本1.7.1。

可以在Go语言官网https://golang.org/dl/根据操作系统下载对应的安装包。这里以Linux为例进行安装,首先下载安装包go1.7.1.linux-amd64.tar.gz,然后执行tar-C/usr/local-xzf go1.7.1.linux-amd64.tar.gz,将安装包解压到/usr/local目录下。编辑$HOME/.profile或$HOME/.bashrc,将export PATH=$PATH:/usr/local/go/bin命令添加到文件中,然后执行source$HOME/.bashrc,使修改生效。这时就可以在系统中使用Go命令了,执行go version来看一下,命令如下。

1.2.3 配置GOPATH

GOPATH 是真正存放代码的路径,Go寻找依赖包时会根据$GOPATH来寻找,GOPATH目录约定有如下3个子目录。

src存放源代码。

pkg存放编译后生成的文件。

bin存放编译后的可执行文件。

这里以/go为GOPATH路径,编辑~/.bashrc文件,将命令export GOPATH=/go添加到文件中,然后执行source~/.bashrc,之后再执行go env看一下效果,结果如下。

可以看到,$GOPATH已经被指定了。

本书中的代码都会基于以上配置,代码路径为$GOPATH/src/github.com/xianlubird/mydocker,项目名称为mydocker,后面会基于这个路径进行开发。