Introduction
Go入门指南
前言
第一部分:学习 Go 语言
第1章:Go 语言的起源,发展与普及
起源与发展
语言的主要特性与发展的环境和影响因素
第2章:安装与运行环境
平台与架构
Go 环境变量
在 Linux 上安装 Go
在 Mac OS X 上安装 Go
在 Windows 上安装 Go
安装目录清单
Go 运行时(runtime)
Go 解释器
编辑器、集成开发环境与其它工具
Go 开发环境的基本要求
编辑器和集成开发环境
调试器
构建并运行 Go 程序
格式化代码
生成代码文档
其它工具
Go 性能说明
与其它语言进行交互
第二部分:语言的核心结构与技术
第4章:基本结构和基本数据类型
文件名、关键字与标识符
Go 程序的基本结构和要素
常量
变量
基本类型和运算符
字符串
strings 和 strconv 包
时间和日期
指针
控制结构
if-else 结构
测试多返回值函数的错误
switch 结构
for 结构
Break 与 continue
标签与 goto
函数(function)
介绍
函数参数与返回值
传递变长参数
defer 和追踪
内置函数
递归函数
将函数作为参数
闭包
应用闭包:将函数作为返回值
使用闭包调试
计算函数执行时间
通过内存缓存来提升性能
数组与切片
声明和初始化
切片
For-range 结构
切片重组(reslice)
切片的复制与追加
字符串、数组和切片的应用
Map
声明、初始化和 make
测试键值对是否存在及删除元素
for-range 的配套用法
map 类型的切片
map 的排序
将 map 的键值对调
包(package)
标准库概述
regexp 包
锁和 sync 包
精密计算和 big 包
自定义包和可见性
为自定义包使用 godoc
使用 go install 安装自定义包
自定义包的目录结构、go install 和 go test
通过 Git 打包和安装
Go 的外部包和项目
在 Go 程序中使用外部库
结构(struct)与方法(method)
结构体定义
使用工厂方法创建结构体实例
使用自定义包中的结构体
带标签的结构体
匿名字段和内嵌结构体
方法
类型的 String() 方法和格式化描述符
垃圾回收和 SetFinalizer
接口(interface)与反射(reflection)
接口是什么
接口嵌套接口
类型断言:如何检测和转换接口变量的类型
类型判断:type-switch
测试一个值是否实现了某个接口
使用方法集与接口
第一个例子:使用 Sorter 接口排序
第二个例子:读和写
空接口
反射包
Printf 和反射
接口与动态类型
总结:Go 中的面向对象
结构体、集合和高阶函数
第三部分:Go 高级编程
读写数据
读取用户的输入
文件读写
文件拷贝
从命令行读取参数
用 buffer 读取文件
用切片读写文件
用 defer 关闭文件
使用接口的实际例子:fmt.Fprintf
格式化 JSON 数据
XML 数据格式
用 Gob 传输数据
Go 中的密码学
错误处理与测试
错误处理
运行时异常和 panic
从 panic 中恢复(Recover)
自定义包中的错误处理和 panicking
一种用闭包处理错误的模式
启动外部命令和程序
Go 中的单元测试和基准测试
测试的具体例子
用(测试数据)表驱动测试
性能调试:分析并优化 Go 程序
Go语言圣经
前言
Go语言起源
Go语言项目
本书的组织
更多的信息
致谢
入门
Hello, World
命令行参数
查找重复的行
GIF动画
获取URL
并发获取多个URL
Web服务
本章要点
程序结构
命名
声明
变量
赋值
类型
包和文件
作用域
基础数据类型
整型
浮点数
复数
布尔型
字符串
常量
复合数据类型
数组
Slice
Map
结构体
JSON
文本和HTML模板
函数
函数声明
递归
多返回值
错误
函数值
匿名函数
可变参数
Deferred函数
Panic异常
Recover捕获异常
方法
方法声明
基于指针对象的方法
通过嵌入结构体来扩展类型
方法值和方法表达式
示例: Bit数组
封装
接口
接口是合约
接口类型
实现接口的条件
flag.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修改值
示例: 解码S表达式
获取结构体字段标签
显示一个类型的方法集
几点忠告
底层编程
unsafe.Sizeof, Alignof 和 Offsetof
unsafe.Pointer
示例: 深度相等判断
通过cgo调用C代码
几点忠告
附录
附录A:原文勘误
附录B:作者译者
附录C:译文授权
附录D:其它语言
Go Web 编程
Go环境配置
Go安装
GOPATH 与工作空间
Go 命令
Go开发工具
小结
Go语言基础
你好,Go
Go基础
流程和函数
struct
面向对象
interface
并发
小结
Web基础
web工作方式
Go搭建一个简单的web服务
Go如何使得web工作
Go的http包详解
小结
表单
处理表单的输入
验证表单的输入
预防跨站脚本
防止多次递交表单
处理文件上传
小结
访问数据库
database/sql接口
使用MySQL数据库
使用SQLite数据库
使用PostgreSQL数据库
使用beedb库进行ORM开发
NOSQL数据库操作
小结
session和数据存储
session和cookie
Go如何使用session
session存储
预防session劫持
小结
文本文件处理
XML处理
JSON处理
正则处理
模板处理
文件操作
字符串处理
小结
Web服务
Socket编程
WebSocket
REST
RPC
小结
安全与加密
预防CSRF攻击
确保输入过滤
避免XSS攻击
避免SQL注入
存储密码
加密和解密数据
小结
国际化和本地化
设置默认地区
本地化资源
国际化站点
小结
错误处理,调试和测试
错误处理
使用GDB调试
Go怎么写测试用例
小结
部署与维护
应用日志
网站错误处理
应用部署
备份和恢复
小结
如何设计一个Web框架
项目规划
自定义路由器设计
controller设计
日志和配置设计
实现博客的增删改
小结
扩展Web框架
静态文件支持
Session支持
表单支持
用户认证
多语言支持
pprof支持
小结
参考资料
Go语言高级编程
第1章 语言基础
1.1 Go语言创世纪
1.2 Hello, World 的革命
1.3 数组、字符串和切片
1.4 函数、方法和接口
1.5 面向并发的内存模型
1.6 常见的并发模式
1.7 错误和异常
1.8 补充说明
第2章 CGO编程
2.1 快速入门
2.2 CGO基础
2.3 类型转换
2.4 函数调用
2.5 内部机制
2.6 实战: 封装qsort
2.7 CGO内存模型
2.8 C++类包装
2.9 静态库和动态库
2.10 编译和链接参数
2.11 补充说明
第3章 汇编语言
3.1 快速入门
3.2 计算机结构
3.3 常量和全局变量
3.4 函数
3.5 控制流
3.6 再论函数
3.7 汇编语言的威力
3.8 例子:Goroutine ID
3.9 Delve调试器
3.10 补充说明
第4章 RPC和Protobuf
4.1 RPC入门
4.2 Protobuf
4.3 玩转RPC
4.4 GRPC入门
4.5 GRPC进阶
4.6 GRPC和Protobuf扩展
4.7 pbgo: 基于Protobuf的框架
4.8 grpcurl工具
4.9 补充说明
第5章 Go和Web
5.1 Web开发简介
5.2 Router请求路由
5.3 Middleware中间件
5.4 Validator请求校验
5.5 Database和数据库打交道
5.6 Ratelimit 服务流量限制
5.7 Layout大型web项目分层
5.8 interface 和 table-driven 开发
5.9 灰度发布和 A/B test
5.10 补充说明
第6章 分布式系统
6.1 分布式 id 生成器
6.2 分布式锁
6.3 延时任务系统
6.4 分布式搜索引擎
6.5 负载均衡
6.6 分布式配置管理
6.7 分布式爬虫
6.8 补充说明
附录
附录A: Go语言常见坑
附录B: 有趣的代码片段
附录C: 作者简介
函数(function)
6.0 函数
函数是 Go 里面的基本代码块:Go 函数的功能非常强大,以至于被认为拥有函数式编程语言的多种特性。在这一章,我们将对
第 4.2.2 节
所简要描述的函数进行详细的讲解。
链接
目录
上一章:
标签与 goto
下一节:
介绍
results matching "
"
No results matching "
"