# 一、下载链接
> 废话少说,先上链接:
> [**点此下载**](https://download.csdn.net/download/tmt123421/11116361)
> **https://download.csdn.net/download/tmt123421/11116361**
>
> ---
>
> 支持正版,正版购买链接:[点此购买](https://item.jd.com/12063141.html)
# 二、内容简介
>本书首先介绍了Go语言的优秀特性、安装设置方法、工程结构、标准命令和工具、语法基础、数据类型以及流程控制方法,接着阐述了与多进程编程和多线程编程有关的知识,然后重点介绍了goroutine、channel以及Go提供的传统同步方法,最后通过一个完整实例——网络爬虫框架进一步阐述Go语言的哲学和理念,同时分享作者在多年编程生涯中的一些见解和感悟。
> 与上一版相比,本书不仅基于Go 1.8对上一版进行了全面更新,而且更深入地描绘了Go运行时系统的内部机理,并且大幅改进了示例代码。
> 本书适用于有一定计算机编程基础的从业者以及对Go语言编程感兴趣的爱好者,非常适合作为Go语言编程进阶教程。
![images](https://img-blog.csdnimg.cn/20190415101931752.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RNVDEyMzQyMQ==,size_16,color_FFFFFF,t_70)
# 三、作者简介
> 郝林
> 从业12年有余的软件工匠,国内知名的Go语言技术布道者,Go语言北京用户组和GoHackers社群的发起人和组织者,多套免费在线Go语言教程的作者,深信Go语言在人工智能时代和机器人时代也能大放异彩的科技信徒。
# 四、目录
> 第1章 初识Go语言 1
> 1.1 语言特性 1
> 1.2 安装和设置 2
> 1.3 工程结构 3
> 1.3.1 工作区 3
> 1.3.2 GOPATH 4
> 1.3.3 源码文件 5
> 1.3.4 代码包 8
> 1.4 标准命令简述 11
> 1.5 问候程序 13
> 1.6 小结 14
> 第2章 语法概览 15
> 2.1 基本构成要素 15
> 2.1.1 标识符 15
> 2.1.2 关键字 16
> 2.1.3 字面量 17
> 2.1.4 操作符 17
> 2.1.5 表达式 19
> 2.2 基本类型 20
> 2.3 高级类型 22
> 2.3.1 数组 23
> 2.3.2 切片 23
> 2.3.3 字典 24
> 2.3.4 函数和方法 25
> 2.3.5 接口 28
> 2.3.6 结构体 29
> 2.4 流程控制 30
> 2.4.1 代码块和作用域 30
> 2.4.2 if语句 32
> 2.4.3 switch语句 32
> 2.4.4 for语句 34
> 2.4.5 defer语句 36
> 2.4.6 panic和recover 38
> 2.5 聊天机器人 40
> 2.6 小结 44
> 第3章 并发编程综述 45
> 3.1 并发编程基础 45
> 3.1.1 串行程序与并发程序 46
> 3.1.2 并发程序与并行程序 46
> 3.1.3 并发程序与并发系统 47
> 3.1.4 并发程序的不确定性 47
> 3.1.5 并发程序内部的交互 47
> 3.2 多进程编程 48
> 3.2.1 进程 48
> 3.2.2 关于同步 55
> 3.2.3 管道 60
> 3.2.4 信号 65
> 3.2.5 socket 74
> 3.3 多线程编程 97
> 3.3.1 线程 98
> 3.3.2 线程的同步 107
> 3.4 多线程与多进程 125
> 3.5 多核时代的并发编程 126
> 3.6 小结 130
> 第4章 Go的并发机制 131
> 4.1 原理探究 131
> 4.1.1 线程实现模型 132
> 4.1.2 调度器 142
> 4.1.3 更多细节 158
> 4.2 goroutine 160
> 4.2.1 go语句与goroutine 160
> 4.2.2 主goroutine的运作 166
> 4.2.3 runtime包与goroutine 166
> 4.3 channel 169
> 4.3.1 channel的基本概念 169
> 4.3.2 单向channel 180
> 4.3.3 for语句与channel 184
> 4.3.4 select语句 185
> 4.3.5 非缓冲的channel 190
> 4.3.6 time包与channel 192
> 4.4 实战演练:载荷发生器 198
> 4.4.1 参数和结果 199
> 4.4.2 基本结构 201
> 4.4.3 初始化 206
> 4.4.4 启动和停止 212
> 4.4.5 调用器和功能测试 221
> 4.5 小结 231
> 第5章 同 步 232
> 5.1 锁的使用 232
> 5.1.1 互斥锁 232
> 5.1.2 读写锁 236
> 5.1.3 锁的完整示例 238
> 5.2 条件变量 244
> 5.3 原子操作 247
> 5.3.1 增或减 247
> 5.3.2 比较并交换 249
> 5.3.3 载入 250
> 5.3.4 存储 251
> 5.3.5 交换 251
> 5.3.6 原子值 252
> 5.3.7 应用于实际 256
> 5.4 只会执行一次 257
> 5.5 WaitGroup 258
> 5.6 临时对象池 262
> 5.7 实战演练——Concurrent Map 265
> 5.8 小结 280
> 第6章 网络爬虫框架设计和实现 281
> 6.1 网络爬虫与框架 281
> 6.2 功能需求和分析 283
> 6.3 总体设计 284
> 6.4 详细设计 286
> 6.4.1 基本数据结构 286
> 6.4.2 接口的设计 293
> 6.5 工具的实现 309
> 6.5.1 缓冲器 309
> 6.5.2 缓冲池 311
> 6.5.3 多重读取器 317
> 6.6 组件的实现 318
> 6.6.1 内部基础接口 319
> 6.6.2 组件注册器 321
> 6.6.3 下载器 323
> 6.6.4 分析器 325
> 6.6.5 条目处理管道 328
> 6.7 调度器的实现 329
> 6.7.1 基本结构 329
> 6.7.2 初始化 331
> 6.7.3 启动 333
> 6.7.4 停止 343
> 6.7.5 其他方法 344
> 6.7.6 总结 345
> 6.8 一个简单的图片爬虫 346
> 6.8.1 概述 346
> 6.8.2 命令参数 346
> 6.8.3 初始化调度器 348
> 6.8.4 监控调度器 354
> 6.8.5 启动调度器 364
> 6.9 扩展与思路 365
> 6.10 本章小结 368
> 附录A Go语言的学习资源 369
---
**——2019-04-15——**
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码`
- 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传