# 1.3 Go 语言版本

该系列文章基于 [master](https://github.com/golang/go/tree/master) 分支的最新代码，截止本系列文章结束，最新的 commit 是 `d26fc68aa10dc8eda5ccdcc80d790e7df2fd9823`, 建议读者基于相同的 commit 来搭建项目及阅读该系列文章。

Go 编译器的开发工作一直在活跃地进行，从最初 C 语言的版本到实现自举，一直到当前阶段，Go Team 一边在增加新的语言特性，一边在对以往的模块进行重构，甚至重写。当前阶段最大的开发工作集中在泛型上，与此同时也在重写整个类型检查模块，在 1.16 版本发布之前，这部分的开发工作一直在 `dev.typeparams` 分支上进行，随着 1.16 的发布以及 1.17 开发工作的展开，该分支的所有内容已经合并到 `master` 分支（参考 [Planning Go 1.17](https://groups.google.com/g/golang-dev/c/DriIMM7VoLs)）。新版本的代码除了增加了对泛型的支持，整个类型检查系统与之前的版本有很大的差异，虽然目前并没有确定，但是根据最新的代码结构以及 [Russ’s Plan](https://groups.google.com/g/golang-dev/c/U7eW9i0cqmo/m/ffs0tyIYBAAJ), 从 1.18 版开始，随着泛型功能的发布，整个编译器应该大概率会采用新版本的类型检查系统（参见 [编译器开发组的讨论](https://github.com/golang/go/issues/43930)）。

本文开始写于 1.16 版本发布之前，最开始是基于 1.15.6 的代码，但随着对以上信息的了解，作者认为没有必要写一系列发表即过时的分析文章，尽管此时距离 1.18 的发布乐观估计还有一年时间，但考虑到代码结构上的巨大改变，同时为了覆盖正在开发的泛型特性，作者还是决定基于 `master` 分支的最新代码来进行分析，由于 `master` 分支的开发工作非常活跃，所以文中所引用的代码位置以及各种文件、函数等名称可能无法随时保持一致，请读者理解。等 Go Team 完成了该部分的开发工作之后，我将会选择一个 Frozen 分支并将所有引用的位置固定。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gocompiler.shizhz.me/1.-golang-bian-yi-qi-qian-yan/1.3-go-yu-yan-ban-ben.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
