基础语法
《GO语言圣经》
- 第一章:入门
- Helloworld
- 命令行参数
- 查找重复的行
- GIF动画
- 获取URL
- 并发获取多个URL
- Web服务
- 第二章:程序结构
- 命名
- 声明
- 变量
- 赋值
- 类型
- 包和文件
- 作用域
- 第三章:基础数据类型
- 整数
- 浮点数
- 复数
- 布尔型
- 字符串
- 常量
- 第四章:复合数据类型
- 数组
- Slice(切片)
- Map
- 结构体
- JSON
- 文本和HTML
- 第五章:函数
- 函数声明
- 递归
- 多返回值
- 错误
- 函数值
- 匿名函数
- 可变参数
- Deferred函数
- Panic异常
- Recover捕获异常
- 第六章:方法
- 方法声明
- 基于指针对象的方法
- 通过嵌入结构提来扩展类型
- 方法值和方法表达式
- 示例:Bit数组
- 封装
- 第七章:接口
- 接口约定
- 接口类型
- 实现接口的条件
- flaq.Value接口
- 接口值
- sort.interface接口
- http.Handler接口
- error接口
- 示例:表达式求值
- 类型断言
- 基于类型断言区别错误类型
- 通过类型断言询问行为
- 类型开关
- 示例:基于标记的XML解码
- 第八章:Goroutines和Channels
- Goroutines
- 示例:并发的Clock服务
- 示例:示例: 并发的Echo服务
- Channels
- 并发的循环
- 示例: 并发的Web爬虫
- 基于select的多路复用
- 示例: 并发的字典遍历
- 并发的退出
- 示例:聊天服务
- 第九章:基于共享变量的并发
- 竞争条件
- sync.Mutex互斥锁
- sync.RWMutex读写锁
- 内存同步
- sync.Once初始化
- 竞争条件检测
- 示例: 并发的非阻塞缓存
- Goroutines和线程
- 第十章:包和工具
- 包简介
- 导入路径
- 包声明
- 导入声明
- 包的匿名导入
- 包和命名
- 工具
- 第十章:测试
- go test
- 测试函数
- 测试覆盖率
- 基准测试
- 剖析
- 示例函数
- 第十二章:反射
- 为何需要反射
- reflect.Type和reflect.Value
- Display递归打印
- 示例: 编码S表达式
- 通过reflect.Value修改值
- 获取结构体字段标识
- 显示一个类型的方法集
- 几点忠告
- 第十三章:底层编程
- unsafe.Sizeof, Alignof 和 Offsetof
- unsafe.Pointer
- 示例: 深度相等判断
- 通过cgo调用C代码
- 几点忠告
网络编程
《Nettwork Programming》
- 体系结构
- 协议层
- 网络
- 网关
- 数据包
- 连接模型
- 通信模型
- 分布式通信模型
- C/S系统
- C/S应用
- 分布式服务端
- 通信Flow
- 分布式组件
- 中间件模型
- 持久处理
- 失败节点
- Acceptance Factors
- 透明性
- 分布式计算的八个误区
- Go语言概览
- 类型
- 多线程
- 包
- 类型转换
- 声明
- GOPATH
- 运行Go程序
- 标准库
- 错误值
- 第三章:Socket级别编程
- TCP/IP栈
- 互联网地址
- IP地址类型
- 服务
- TCP Socket
- 控制TCP连接
- UDP数据报
- 监听多个Socket的服务
- Conn, PacketConn, 和Listener 类型
- 原始Socket和IPConn类型
- 第四章:数据序列化
- 结构化数据
- 双方协定
- 自描述数据
- ASN.1
- JSON
- Gob包
- 将二进制数据编码成字符串
- Protocol Buffers
- 第五章:应用级别协议
- 协议设计
- 你为什么应该担忧?
- 版本控制
- 消息格式
- 数据格式
- 一个简单的样例
- 状态信息
- 第六章:管理字符集和编码
- 定义
- ASCII
- ISO 8859
- Unicode
- UTF-8,Go,和Runes
- UTF-16和GO
- Unicode Cotchas
- ISO 8859 和 Go
- 其他字符集和Go
- 第七章:安全
- ISO安全体系
- 数据完整
- 对称密钥加密
- 公钥加密
- X.509验证
- 第八章:HTTP
- URLs和资源
- 简单用户代理(User Agent)
- 配置HTTP请求
- Client对象
- 代理处理(proxy)
- 通过Client进行HTTPS连接
- 服务器
- HTTPS
- 第九章:模板
- 插入对象值
- 管道
- 定义函数
- 变量
- 条件语句
- HTML/Template包
- 第十章:一个完整的Web服务器
- 浏览网站的流程图
- 浏览文件
- 基础服务器
- listFlashCards函数
- manageFlashCards函数
- 中国字典
- Flashcards集合
- 解决声调
- ListWords函数
- showFlashCards函数
- 在浏览器上的展现
- 运行这个服务器
- 第十一章:HTML
- Go语言的HTML/Template包
- Tokenizing HTML
- XHTML/HTML
- JSON
- 第十二章:XML
- 解析XML
- Unmarshalling XML
- Marshalling XML
- XHTML
- HTML
- 第十三章:
- 远程进程调用
- Go语言的RPC
- JSON
- 第十四章:REST
- URIs和资源
- 表现
- REST 动词
- 无状态
- 应用状态引擎的超媒体(HATEOAS)
- 链接表示
- Transactions with REST
- The Richardson Maturity Model
- Flashcards Revisited
- The Demultiplexer (Demuxer)
- Content Negotiation
- Handling Other URLs
- The Complete Server
- Client
- 使用REST还是RPC
- 第十五章:WebSocket
- websocket服务器
- The Go Sub-Repository Package
- The Gorilla Package
语言技巧
《Go in Practice》
- 第一部分:基础
- 第一章:走进Go
- Go是什么
- Go中值得注意的地方
- 多返回值
- 现代标准库
- Concurrency with goroutines and channels
- Go工具链:不仅仅是一个编程语言
- 众多语言中的Go
- C和Go
- Java和Go
- Python、PHP和Go
- Javascript、Node.js和Go
- 开始运行Go
- 你好,Go
- 第二章:基础
- 命令行程序
- 处理配置
- 现实世界的Web服务
- 第三章:Go中的Concurrency
- 理解Go的Concurrency模型
- 使用goroutines
- 使用channels
- 第一章:走进Go
- 第二部分:多彩的应用
- 第四章:处理error和panic
- Error处理
- panic系统
- 第五章:调试和测试
- 定位bug
- 日志
- 访问栈追踪(stack trace)
- 测试
- 性能测试
- 第四章:处理error和panic
- 第三部分:应用接口
- 第六章:HTML和Email模板
- HTML模板
- 为Email使用模板
- 第七章:服务和接收资源和表单
- 提供静态内容服务
- 处理表单请求
- 第八章:Web服务
- REST APIs
- 传递和处理HTTP error
- 解析和映射JSON
- API版本控制
- 第六章:HTML和Email模板
- 第四部分:应用云端部署
- 第九章:使用云服务
- 云集算是什么
- 管理云服务
- 云服务器上运行你的程序
- 第十章:云服务之间的通信
- 微服务和高可用
- 服务间通信
- 第十一章:反射和代码生成
- 反射的三个特征
- Structs、tags、和annotations
- 通过Go代码生成Go代码
- 第九章:使用云服务
Web编程
《Go Web Programming》
- 第一部分:Go语言和Web应用
- 第一章:Go语言和Web应用
- 使用Go开发Web应用
- Web应用是怎样工作
- HTTP简介
- Web应用的出现
- HTTP请求(request)
- HTTP响应(response)
- URI
- HTTP/2简介
- 一个Web'应用的组成部分
- 你好,Go
- 第二章:Go实现ChitChat
- 我们来聊天吧
- 应用设计
- 数据模型
- 接收和处理请求
- 通过模板生成HTML响应
- 安装PostgreSQL
- 数据库接口
- 启动服务器
- 组合封装起来
- 第一章:Go语言和Web应用
- 第二部分:基础Web应用
- 第三章:handling请求
- Go的net/http库
- Go服务
- Handlers和handler函数
- 使用HTTP/2
- 第四章:processing请求
- 请求和响应
- HTML表单和Go
- ResponseWriter
- Cookies
- 第五章:展现内容
- 模板和模板引擎
- Go语言模板引擎
- 动作
- 参数、变量和管道
- 函数
- 上下文语义
- 嵌套模板
- 使用block动作来定义模板
- 第六章:存储数据
- 内存存储
- 文件存储
- Go和SQL
- Go和SQL 关系
- Go关系映射器
- 第三章:handling请求
- 第三部分:现实世界
- 第七章:Go Web服务
- web服务简介
- 基于SOAP的Web服务
- 基于REST的Web服务
- 使用Go解析和创建XML
- 使用Go解析和创建JSON
- 创建Go Web服务
- 第八章:测试 你的应用
- Go和测试
- Go单元测试
- Go HTTP测试
- 测试重复和依赖注入
- 第三方Go测试库
- 第九章:使用Go的concurrency
- concurrency不是并行
- Goroutines
- Channels
- Web应用中使用Concurrency
- 第十章:部署Go应用
- 部署到服务器
- 部署到Heroku
- 部署到Google APP Engine
- 部署到Docker
- 不同部署方法的比较
- 第七章:Go Web服务