欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
全部教程·
Go语言·
Go语言圣经
[目录]
·
1. 入门
Go语言圣经
0.1. Go语言起源
0.2. Go语言项目
0.3. 本书的组织
0.4. 更多的信息
0.5. 致谢
1. 入门
1.1. Hello, World
1.2. 命令行参数
1.3. 查找重复的行
1.4. GIF动画
1.5. 获取URL
1.6. 并发获取多个URL
1.7. Web服务
1.8. 本章要点
2. 程序结构
2.1. 命名
2.2. 声明
2.3. 变量
2.4. 赋值
2.5. 类型
2.6. 包和文件
2.7. 作用域
3. 基础数据类型
3.1. 整型
3.2. 浮点数
3.3. 复数
3.4. 布尔型
3.5. 字符串
3.6. 常量
4. 复合数据类型
4.1 数组
4.2 Slice
4.3 Map
4.4 结构体
4.5 JSON
4.6 文本和HTML模板
5. 函数
5.1. 函数声明
5.2. 递归
5.3. 多返回值
5.4. 错误
5.5. 函数值
5.6. 匿名函数
5.7. 可变参数
5.8. Deferred函数
5.9. Panic异常
5.10. Recover捕获异常
6. 方法
6.1. 方法声明
6.2. 基于指针对象的方法
6.3. 嵌入结构体扩展类型
6.4. 方法值和表达式
6.5. 示例: Bit数组
6.6. 封装
7. 接口
7.1. 接口是合约
7.2. 接口类型
7.3. 实现接口的条件
7.4. flag.Value接口
7.5. 接口值
7.6. sort.Interface接口
7.7. http.Handler接口
7.8. error接口
7.9. 示例: 表达式求值
7.10. 类型断言
7.11. 识别错误类型
7.12. 查询接口
7.13. 类型分支
7.14. XML解码
7.15. 补充几点
8. Go协程和通道
8.1. Goroutines
8.2. 并发的Clock服务
8.3. 并发的Echo服务
8.4. Channels
8.5. 并发的循环
8.6. 并发的Web爬虫
8.7. 多路复用
8.8. 并发的字典遍历
8.9. 并发的退出
8.10. 聊天服务
9. 并发
9.1. 竞争条件
9.2. sync.Mutex互斥锁
9.3. sync.RWMutex读写锁
9.4. 内存同步
9.5. sync.Once初始化
9.6. 竞争条件检测
9.7. 并发的非阻塞缓存
9.8. Goroutines和线程
10. 包和工具
10.1. 包简介
10.2. 导入路径
10.3. 包声明
10.4. 导入声明
10.5. 包的匿名导入
10.6. 包和命名
10.7. 工具
11. 测试
11.1. go test
11.2. 测试函数
11.3. 测试覆盖率
11.4. 基准测试
11.5. 剖析
11.6. 示例函数
12. 反射
12.1. 为何需要反射
12.2. reflect.Type
12.3. 递归打印
12.4. 编码S表达式
12.5. reflect.Value修改值
12.6. 解码S表达式
12.7. 获取结构体字段
12.8. 显示类型的方法集
12.9. 几点忠告
13. 底层编程
13.1. unsafe.Sizeof
13.2. unsafe.Pointer
13.3. 深度相等判断
13.4. cgo调用C代码
13.5. 几点忠告
Go语言圣经
0.1. Go语言起源
0.2. Go语言项目
0.3. 本书的组织
0.4. 更多的信息
0.5. 致谢
1. 入门
1.1. Hello, World
1.2. 命令行参数
1.3. 查找重复的行
1.4. GIF动画
1.5. 获取URL
1.6. 并发获取多个URL
1.7. Web服务
1.8. 本章要点
2. 程序结构
2.1. 命名
2.2. 声明
2.3. 变量
2.4. 赋值
2.5. 类型
2.6. 包和文件
2.7. 作用域
3. 基础数据类型
3.1. 整型
3.2. 浮点数
3.3. 复数
3.4. 布尔型
3.5. 字符串
3.6. 常量
4. 复合数据类型
4.1 数组
4.2 Slice
4.3 Map
4.4 结构体
4.5 JSON
4.6 文本和HTML模板
5. 函数
5.1. 函数声明
5.2. 递归
5.3. 多返回值
5.4. 错误
5.5. 函数值
5.6. 匿名函数
5.7. 可变参数
5.8. Deferred函数
5.9. Panic异常
5.10. Recover捕获异常
6. 方法
6.1. 方法声明
6.2. 基于指针对象的方法
6.3. 嵌入结构体扩展类型
6.4. 方法值和表达式
6.5. 示例: Bit数组
6.6. 封装
7. 接口
7.1. 接口是合约
7.2. 接口类型
7.3. 实现接口的条件
7.4. flag.Value接口
7.5. 接口值
7.6. sort.Interface接口
7.7. http.Handler接口
7.8. error接口
7.9. 示例: 表达式求值
7.10. 类型断言
7.11. 识别错误类型
7.12. 查询接口
7.13. 类型分支
7.14. XML解码
7.15. 补充几点
8. Go协程和通道
8.1. Goroutines
8.2. 并发的Clock服务
8.3. 并发的Echo服务
8.4. Channels
8.5. 并发的循环
8.6. 并发的Web爬虫
8.7. 多路复用
8.8. 并发的字典遍历
8.9. 并发的退出
8.10. 聊天服务
9. 并发
9.1. 竞争条件
9.2. sync.Mutex互斥锁
9.3. sync.RWMutex读写锁
9.4. 内存同步
9.5. sync.Once初始化
9.6. 竞争条件检测
9.7. 并发的非阻塞缓存
9.8. Goroutines和线程
10. 包和工具
10.1. 包简介
10.2. 导入路径
10.3. 包声明
10.4. 导入声明
10.5. 包的匿名导入
10.6. 包和命名
10.7. 工具
11. 测试
11.1. go test
11.2. 测试函数
11.3. 测试覆盖率
11.4. 基准测试
11.5. 剖析
11.6. 示例函数
12. 反射
12.1. 为何需要反射
12.2. reflect.Type
12.3. 递归打印
12.4. 编码S表达式
12.5. reflect.Value修改值
12.6. 解码S表达式
12.7. 获取结构体字段
12.8. 显示类型的方法集
12.9. 几点忠告
13. 底层编程
13.1. unsafe.Sizeof
13.2. unsafe.Pointer
13.3. 深度相等判断
13.4. cgo调用C代码
13.5. 几点忠告
第一章 入门
本章介绍Go语言的基础组件。本章提供了足够的信息和示例程序,希望可以帮你尽快入门, 写出有用的程序。本章和之后章节的示例程序都针对你可能遇到的现实案例。先了解几个Go程序,涉及的主题从简单的文件处理、图像处理到互联网客户端和服务端并发。当然,第一章不会解释细枝末节,但用这些程序来学习一门新语言还是很有效的。
学习一门新语言时,会有一种自然的倾向, 按照自己熟悉的语言的套路写新语言程序。学习Go语言的过程中,请警惕这种想法,尽量别这么做。我们会演示怎么写好Go语言程序,所以,请使用本书的代码作为你自己写程序时的指南。
下一章:1.1. Hello, World
我们以现已成为传统的“hello world”案例来开始吧。Go是一门编译型语言,Go语言的工具链将源代码及其依赖转换成计算机的机器指令。Go语言提供的工具都通过一个单独的命令go调用,go命令有一系列子命令。
AI 中文社