Go语言内幕(1):主要概念与项目结构

让我们开始吧

每当开始学习一门新编程语言的时候,你总是可以找到大量的 “hello world” 教程、新手指南或者关于语言的主要概念、语法甚至标准库的文档。然而,当你想找一些介绍得更加深入的资料,比如语言运行时分配的数据结构在内存中的布局,或者调用一个内置函数时到底生成了什么样的汇编代码,你就会发现这并非易事。显然,这些问题的答案都藏在源代码中。但是,以我的个人经验来看,你很可能花费数小时在源代码中摸索却最终一无所获。

我并不是打算装得自己什么都懂,也没有打算介绍得面面俱到。而是希望可以帮助你去探索 Go 语言的源代码。

在我们开始之前,我们需要自己有一份 Go 源代码的拷贝。要获得它的源代码非常容易,只需要执行如下代码:

git clone https://github.com/golang/go

请注意,这份代码的主分支是在不断改进中的,我在这个博客中使用的是 release-brach.go1.4 这个分支。

搞清楚项目结构

如果你看一下 Go 仓库的 /src 文件夹,你会看到很多文件夹。其中,大部分文件夹都是 Go 标准库的源文件。该项目使用标准命名规则,所以每一个包(pakage)都在一个独立的文件夹中,而且这个文件夹的名称与包名称相同。除了标准库以外,该目录中还有很多其它的东西。就我各人看法,其中最有用的文件中主要有:

文件夹 描述
/src/cmd/ 包含不同的命令行工具。
/src/cmd/go/ 该目录下包含一个 Go 工具的源代码文件。此工具用于下载编译 Go 的源文件,以及安装 Go 语言的包。在完成上述工作中,它会收集所有源文件并调用 Go 链接器与编译器。

你可能感兴趣的:(Web开发)