章节概览
第一章,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服务器以及读取原生网络包。