go语言成为2016年TIOBE年度语言,距离上次TIOBE年度语言至今已经过去7年,在过去的7年里,go语言也得到了广泛的应用,尤其是在开源领域,从docker到kubernetes都使用了go作为开发语言。在这系列文章中,我们将一起来由浅入深学习一下go语言,至少在研究这些流行的开源软件更加得心应手一些。

背景

go语言是由google在2009年11月10日发布的一门全新的语言,支持面向对象和反射机制,具有接近于c的运行速度,远远快于c和c++的编译速度,近似脚本语言的灵活。当然和总多流行语言一样,有着众多坚定的支持者和不屑一顾的反对者,但是从它诞生到现在,发展和扩散的速度一直很快也是不争的事实。

特点

go语言具有很多的特点,将一部分主要特点列举如下:

项番

详细内容

No.1

静态编译型语言

No.2

语法简洁,趋近于脚本化

No.3

跨平台支持

No.4

自动垃圾回收机制

No.5

具有并发变成模型和机制(goroutine等)

No.6

支持多种编程风格,支持面向对象

No.7

无继承层次的轻量级方式

No.8

全面的工具支持

No.9

统一的代码风格以及自己的代码格式化工具

No.10

编译和运行速度飞快

No.11

总多的标准库

No.12


安装

安装非常简单,只需要下载/解压/设定环境变量即可,本系列文章中使用CentOS,整体相关相差无几,仅仅在于安装时的package/以及环境变量的设定方式的OS的差别而已。

项目

详细信息

下载地址

https://golang.org/dl/

下载版本

1.7.5

OS

Linux

OS bit

64bit

二进制链接

https://storage.googleapis.com/golang/go1.7.5.linux-amd64.tar.gz

go语言知识点总结 go语言从入门到进阶实战_go语言

安装命令:
cd /usr/local
wget https://storage.googleapis.com/golang/go1.7.5.linux-amd64.tar.gz
gunzip -dc go1.7.5.linux-amd64.tar.gz |tar xvf -

环境变量

go只需要设定GOROOT和PATH即可,在CentOS如下设定即可对全用户有效。

[root@liumiaocn ~]# tail -n2 /etc/profile
export GOROOT=/usr/local/go
export PATH=$PATH:${GOROOT}/bin
[root@liumiaocn ~]#

结果确认

[root@liumiaocn ~]# echo $GOROOT
/usr/local/go
[root@liumiaocn ~]# which go
/usr/local/go/bin/go
[root@liumiaocn ~]#

除了GOROOT和PATH的环境变量,GO还有其他一些环境变量,入门阶段可以不作深入确认,在后面的学习中将会慢慢展开,如上安装之后,相关的环境变量信息如下所示:

项目

设定内容

GOARCH

“amd64”

GOBIN

“”

GOEXE

“”

GOHOSTARCH

“amd64”

GOHOSTOS

“linux”

GOOS

“linux”

GOPATH

“”

GORACE

“”

GOROOT

“/usr/local/go”

GOTOOLDIR

“/usr/local/go/pkg/tool/linux_amd64”

CC

“gcc”

GOGCCFLAGS

“-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build703746769=/tmp/go-build -gno-record-gcc-switches”

CXX

“g++”

CGO_ENABLED

“1”

版本确认

使用如下命令,可以确认所安装的版本为go1.7.5,安装则正常完成了。

[root@liumiaocn ~]# go version
go version go1.7.5 linux/amd64
[root@liumiaocn ~]#

安装详细

解压后,go1.7.5被gunzip到/usr/local/go下,详细的信息如下所示:

[root@liumiaocn go]# pwd
/usr/local/go
[root@liumiaocn go]# ls -l
total 132
drwxr-xr-x.  2 root root  4096 Jan 26 12:43 api
-rw-r--r--.  1 root root 29041 Jan 26 12:43 AUTHORS
drwxr-xr-x.  2 root root    39 Jan 26 12:48 bin
drwxr-xr-x.  4 root root    35 Jan 26 12:48 blog
-rw-r--r--.  1 root root  1168 Jan 26 12:43 CONTRIBUTING.md
-rw-r--r--.  1 root root 40192 Jan 26 12:43 CONTRIBUTORS
drwxr-xr-x.  8 root root  4096 Jan 26 12:43 doc
-rw-r--r--.  1 root root  5686 Jan 26 12:43 favicon.ico
drwxr-xr-x.  3 root root    17 Jan 26 12:43 lib
-rw-r--r--.  1 root root  1479 Jan 26 12:43 LICENSE
drwxr-xr-x. 14 root root  4096 Jan 26 12:48 misc
-rw-r--r--.  1 root root  1303 Jan 26 12:43 PATENTS
drwxr-xr-x.  7 root root    82 Jan 26 12:48 pkg
-rw-r--r--.  1 root root  1638 Jan 26 12:43 README.md
-rw-r--r--.  1 root root    26 Jan 26 12:43 robots.txt
drwxr-xr-x. 45 root root  4096 Jan 26 12:43 src
drwxr-xr-x. 18 root root  8192 Jan 26 12:48 test
-rw-r--r--.  1 root root     7 Jan 26 12:43 VERSION
[root@liumiaocn go]#

对经常可能用到的文件夹,进行简单说明如下:

项目

详细说明

api

go各个版本的api,保存在go1.1.txt到go1.7.txt7个文件中。except.txt保存即将废弃的api,而next.txt保存着下个版本将会出现的内容

bin

相关的可执行文件,缺省会有go/gofmt/godoc

doc

离线官方文档和说明

misc

各IDE的插件等

pkg

go标准库的归档文件

src

源码

test

测试代码

C语言的经验者

有C语言的经验的开发者中可以从下面的比较中快速上手。
http://hyperpolyglot.org/c

总结

通过本文可以简单了解go的特点以及如何在centos上安装go1.7.5,以及安装后各目录的作用。