> For the complete documentation index, see [llms.txt](https://wskdsgcf.gitbook.io/mastering-go-zh-cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wskdsgcf.gitbook.io/mastering-go-zh-cn/2-go-nei-bu-ji-zhi/02.1.md).

# 02.1 本章概述

在前面章节中提到的所有的Go特性都非常简便，你会一直使用它们。然而，更有价值的事情是看到并理解Go程序背后的运行机制。

本章将会介绍垃圾回收以及它的运行机制、如何在Go程序中调用C的代码。在某些情况下在Go中使用C代码是必不可缺的，但是在大多数情况下你并不会用到，因为Go本身就是一种非常强大的编程语言。同样的，如何在C程序中调用Go代码也将会介绍。最后将谈谈如何使用`panic()、recover()`函数和`defer`关键字。

本章你将会学习的主题：

* Go编译器
* Go的垃圾回收是如何工作的
* 如何检测垃圾回收的运转情况
* 在Go中调用C
* 在C中调用Go
* `panic()` 和 `recover()`函数
* `unsafe`包
* 方便但又棘手的关键字`defer`
* Linux工具`strace`
* `FreeBSD` 和 `macOS High Sierra`常用的`dtrace`工具
* 查找Go环境的信息
* 节点树
* Go汇编
