Go For Go (1)
Shanks
leehaoran111@163.com
02,2018
Abstract
作为Go语言学习的开篇,在本文先介绍下为什么要学习Go语言,学
习Go语言能给 我们带来什么收获?然后给一个简单例子,介绍下Go语言
的基本编译,运行过程。 顺便会介绍下Go语言的一些特性。
1 Why GO
1.1 Who create Go
均坯语言是由均坯坯坧坬坥的坒坯坢坥坲坴 均坲坩坥坳坥坭坥坲,坒坯坢 坐坩坫坥和坋坥坮 坔坨坯坭坰坳坯坮在圲地地圷年圹月
开始构想, 圲地地圹年发布了第一版。这个语言的目标是高效地编译执行,轻松地
写可靠稳定的 程序。坋坥坮 坔坨坯坭坰坳坯坮在计算机领域是一个了不起的人物,尤其
是对坕坎坉坘的贡献。 我们着重介绍下这块的历史。
坕坮坩坸 是一个伟大的操作系统,由坋坥坮 坔坨坯坭坰坳坯坮, 坄坥坮坮坩坳 坒坩坴坣坨坩坥,坄坯坵坧坬坡坳
坍坣坬坬坲坯坹 圱圹圶圹年在坁坔圦坔的贝尔实验室开发。起初他们打算开发一个多任务,多
用户的操作 系统,也就是坍坵坬坴坩坣坳操作系统,后来这个项目越开发越复杂,导
致后面没 法完 成了。而坔坨坯坭坰坳坯坮吸取了该项目中的一些好的特性,写了一个
简易的操作系统, 也可以做到多用户,多任务圬为了和坍坵坬坴坩坣坳区分一下,就命
名成了坕坮坩坸。由于 坕坮坩坸的简单高效,得到了越来越多的人认可。
坃语语语言言言 但但但是坵坮坩坸开始编写的时候,用的是汇编语言,在做平台移植的时候很
不方便。如 果用一套高级语言实现的话,就可以将平台无 关的部分剥离出来,
这样 可以大大减少 平台移植的工作量。于是坒坩坴坣坨坩坥就将当时的坂语言进行了改
良,出现了 今天大名 鼎鼎的坃语言。于是坔坨坯坭坰坳坯坮和坒坩坴坣坨坩坥用坃语言把坵坮坩坸内
核重写了一遍。这样 使得坕坮坩坸和坃语言成为了世界的主导。 以我们今天的角度
看用不同的语言实现些功能可能很容 易,可是坔坨坯坭坰坳坯坮和 坒坩坴坣坨坩坥在做这件事
的时候,还需要做跨平台的编译器, 涉及到编译器就不太容 易了。编译和链接
都是一个很大的工程。我们今天编译坃代码都是简单的坧坣坣 源 文件,然后运行
就可以了。在我们做这件事背后,涉及了大量更深的内容 ,坧坣坣 编译,将源文
件编译成目标文件。涉及到了标记解 析,语法解析,语义解析 ,目 标优化等编
译过程。这块会涉及很多东西,上下文无关文法,状态机,坹坡坮坫等。 在目标文
件变成可执行文件时,就是链接的过程,链接需要涉及到动态符号查找圬重 定
圱