Go 语言编程 PDF 文档
本书首先引领读者快速浏览 Go 语言的全貌,迅速消除读者对这门语言的陌生感,然后循序渐进地介绍了 Go 语言的面向过程和面向对象的编程语法,其中穿插了一些与其他主流语言的比较以让读者理解 Go 语言的设计动机,接着探讨了 Go 语言最为重要的并行编程方法,之后介绍了网络编程、工程管理、安全编程、开发工具等非语法相关但非常重要的内容,最后为一系列关于 Go 语言的文章,可以帮助读者更深入了解这门全新的语言。
本书适合所有层次的开发者阅读。
提起 Go 语言的出身,我们就必须将我们饱含敬意的眼光投向持续推出惊世骇俗成果的贝尔实验室。贝尔实验室已经走出了多位诺贝尔奖获得者,一些对于现在科技至关重要的研究成果,比如晶体管、通信技术、数码相机的感光元件 CCD 和光电池等都源自贝尔实验室。该实验室在科技界的地位可想而之,是一个毫无争议的科研圣地。
这里我们重点介绍一下贝尔实验室中一个叫计算科学研究中心的部门对于操作系统和编程语言的贡献。回溯至 1969 年(估计大部分读者那时候都还没出世),肯·汤普逊(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)在贝尔实验室的计算科学研究中心里开发出了 Unix 这个大名鼎鼎的操作系统,还因为开发 Unix 而衍生出了一门同样赫赫有名的编程语言——C 语言。对于很大一部分人而言,Unix 就是操作系统的鼻祖,C 语言也是计算机课程中最广泛使用的编程语言。
Unix 和 C 语言在过去的几十年以来已经造就了无数的成功商业故事,比如曾在 90 年代如日中天的太阳微系统(Sun MicroSystems),现在正如日中天的苹果的 Mac OS X 操作系统其实也可以认为是 Unix 的一个变种(FreeBSD)。
目录
第 1 章 初识 Go 语言
1.1 语言简史
1.2 语言特性
1.2.1 自动垃圾回收
1.2.2 更丰富的内置类型
1.2.3 函数多返回值
1.2.4 错误处理
1.2.5 匿名函数和闭包
1.2.6 类型和接口
1.2.7 并发编程
1.2.8 反射
1.2.9 语言交互性
1.3 第一个 Go 程序
1.3.1 代码解读
1.3.2 编译环境准备
1.3.3 编译程序
1.4 开发工具选择
1.5 工程管理
1.6 问题追踪和调试
1.6.1 打印日志
1.6.2 GDB 调试
1.7 如何寻求帮助
1.7.1 邮件列表
1.7.2 网站资源
1.8 小结
第 2 章 顺序编程
2.1 变量
2.1.1 变量声明
2.1.2 变量初始化
2.1.3 变量赋值
2.1.4 匿名变量
2.2 常量
2.2.1 字面常量
2.2.2 常量定义
2.2.3 预定义常量
2.2.4 枚举
2.3 类型
2.3.1 布尔类型
2.3.2 整型
2.3.3 浮点型
2.3.4 复数类型
2.3.5 字符串
2.3.6 字符类型
2.3.7 数组
2.3.8 数组切片
2.3.9 map
2.4 流程控制
2.4.1 条件语句
2.4.2 选择语句
2.4.3 循环语句
2.4.4 跳转语句
2.5 函数
2.5.1 函数定义
2.5.2 函数调用
2.5.3 不定参数
2.5.4 多返回值
2.5.5 匿名函数与闭包
2.6 错误处理
2.6.1 error 接口
2.6.2 defer
2.6.3 panic()和 recover()
2.7 完整示例
2.7.1 程序结构
2.7.2 主程序
2.7.3 算法实现
2.7.4 主程序
2.7.5 构建与执行
2.8 小结
第 3 章 面向对象编程
3.1 类型系统
3.1.1 为类型添加方法
3.1.2 值语义和引用语义
3.1.3 结构体
3.2 初始化
3.3 匿名组合
3.4 可见性
3.5 接口
3.5.1 其他语言的接口
3.5.2 非侵入式接口
3.5.3 接口赋值
3.5.4 接口查询
3.5.5 类型查询
3.5.6 接口组合
3.5.7 Any 类型
3.6 完整示例
3.6.1 音乐库
3.6.2 音乐播放
3.6.3 主程序
3.6.4 构建运行
3.6.5 遗留问题
3.7 小结
第 4 章 并发编程
4.1 并发基础
4.2 协程
4.3 goroutine
4.4 并发通信
4.5 channel
4.5.1 基本语法
4.5.2 select
4.5.3 缓冲机制
4.5.4 超时机制
4.5.5 channel 的传递
4.5.6 单向 channel
4.5.7 关闭 channel
4.6 多核并行化
4.7 出让时间片
4.8 同步
4.8.1 同步锁
4.8.2 全局唯一性操作
4.9 完整示例
4.9.1 简单 IPC 框架
4.9.2 中央服务器
4.9.3 主程序
4.9.4 运行程序
4.10 小结
第 5 章 网络编程
5.1 Socket 编程
5.1.1 Dial()函数
5.1.2 ICMP 示例程序
5.1.3 TCP 示例程序
5.1.4 更丰富的网络通信
5.2 HTTP 编程
5.2.1 HTTP 客户端
5.2.2 HTTP 服务端
5.3 RPC 编程
5.3.1 Go 语言中的 RPC 支持与处理
5.3.2 Gob 简介
5.3.3 设计优雅的 RPC 接口
5.4 JSON 处理
5.4.1 编码为 JSON 格式
5.4.2 解码 JSON 数据
5.4.3 解码未知结构的 JSON 数据
5.4.4 JSON 的流式读写
5.5 网站开发
5.5.1 最简单的网站程序
5.5.2 net/http 包简介
5.5.3 开发一个简单的相册网站
5.6 小结
第 6 章 安全编程
6.1 数据加密
6.2 数字签名
6.3 数字证书
6.4 PKI 体系
6.5 Go 语言的哈希函数
6.6 加密通信
6.6.1 加密通信流程
6.6.2 支持 HTTPS 的 Web 服务器
6.6.3 支持 HTTPS 的文件服务器
6.6.4 基于 SSL/TLS 的 ECHO 程序
6.7 小结
第 7 章 工程管理
7.1 Go 命令行工具
基本用法
7.2 代码风格
7.2.1 强制性编码规范
7.2.2 非强制性编码风格建议
7.3 远程 import 支持
7.4 工程组织
7.4.1 GOPATH
7.4.2 目录结构
7.5 文档管理
7.6 工程构建
7.7 跨平台开发
7.7.1 交叉编译
7.7.2 Android 支持
7.8 单元测试
7.9 打包分发
7.10 小结
第 8 章 开发工具
8.1 选择开发工具
8.2 gedit
8.2.1 语法高亮
8.2.2 编译环境
8.3 Vim
8.4 Eclipse
8.5 Notepad++
8.5.1 语法高亮
8.5.2 编译环境
8.6 LiteIDE
8.7 小结
第 9 章 进阶话题
9.1 反射
9.1.1 基本概念
9.1.2 基本用法
9.1.3 对结构的反射操作
9.2 语言交互性
9.2.1 类型映射
9.2.2 字符串映射
9.2.3 C 程序
9.2.4 函数调用
9.2.5 编译 Cgo
9.3 链接符号
9.4 goroutine 机理
9.4.1 协程
9.4.2 协程的 C 语言实现
9.4.3 协程库概述
9.4.4 任务
9.4.5 任务调度
9.4.6 上下文切换
9.4.7 通信机制
9.5 接口机理
9.5.1 类型赋值给接口
9.5.2 接口查询
9.5.3 接口赋值
附录 A
A.1 Go 语言标准库
A.1.1 常用包介绍
A.1.2 完整包列表
封底
下载地址:https://www.wenjiangs.com/wp-content/uploads/2023/06/wg47X2zG6XREhIsQ.zip
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论