# 00.3 章节概览

*第一章*，Go与操作系统，首先讨论了Go的历史、Go的优势、及*godoc*的用法，并且教你如何编译和执行一个Go程序；接下来阐述了用户输入输出，如何使用命令行参数以及log文件；本章最后一个主题是错误处理，其在Go里具有举足轻重的地位。

*第二章*，深入剖析Go的各种内部原理，讨论了Go垃圾回收机制及其内部原理；然后展示了一些不安全的代码和包，C代码与Go的互相调用，defer关键字及strace、dtrace两个小工具的使用示例；本章最后你将学习如何使用Go汇编器获取环境变量的信息。

*第三章*，Go基本数据类型，讨论Go提供的基本数据类型，包括数组，切片，映射，指针，常量，循环以及时间与日期的基本操作。我想你不会愿意错过这一章的！

*第四章*，组合类型的使用，以Go结构体与struct关键字开始本章，之后讨论了元组、字符串、rune、字节切片以及字符串字面量；最后讲解了正则表达式与模式匹配，switch语句、strings包、math/big包，以及如何使用Go实现简单的k-v存储。

*第五章*，数据结构的Go描述，当Go提供的内置基本类型不能满足你的需求时，你可以实现自己的数据类型，本章将教你实现包括二叉树、链表、哈希表、栈、队列在内的数据结构并了解它们的优势及具体使用场景。最后，你将学会如何使用Go产生随机数。

*第六章*， Go package中不为人知的知识，本章包括Go的包和函数的知识，如init()函数，syscall标准库，text/template和html/template包。这一章将会让你成为更棒的Go开发者。

*第七章*，反射和接口，我们将讨论更高级的概念，包括反射，接口，类型方法。Go的面向对象编程也会在本章出现！

*第八章*，Go UNIX系统编程，本章关于如何使用Go进行UNIX系统编程，包括使用flag包获取命令行参数，处理UNIX信号量，文件的输入输出，bytes包以及io.Reader和io.Writer接口。我之前提到过，如果你想在系统编程进行更加深入的研究，读完本书后可以阅读*Go系统编程*一书。

*第九章*，并发-Goroutines,Channel和Pipeline，本章讨论Goroutines,Channel和Pipeline，Go使用这些技术实现并发操作。你将了解到进程、线程、goroutine之间的区别，sync包和调度器原理也会涉及。

*第十章*，Go 并发-进阶讨论，在上一章的基础上进一步讨论Go并发编程，旨在帮助你成为goroutine和channel的专家！主要内容有，Go调度器深入讲解，强大的select关键字的使用，channel的不同类型，共享内存，互斥锁，sync.Mutex与syncRWMutex类型的使用。最后将会讨论context包，工作池以及如何检测竞争代码的状态。

*十一章*，代码测试，优化以及分析，本章内容包括代码测试，优化，代码分析以及交叉编译，创建文档，基准测试等内容。

*十二章*， Go网络编程基础，主要内容是net/http包的使用以及如何使用Go设计实现web客户端与服务器。除此之外涉及http.Response，http.Request的使用，http.Transport结构和http.NewServerMux类型的讲解。通过本章学习，你将能够使用Go开发完整的网站！最后，你会了解如何使用Go读取网络接口配置和实现DNS轮询。

*十三章*， 网络编程-构建服务器与客户端，本章讨论如何基于net包实现UDP和TCP客户端与服务器，如何创建RPC客户端与服务器，实现并发的TCP服务器以及读取原生网络包。
