Content
16 Lessons • 0 Quizzes • 0 Challenges
课程介绍
- 1
课程概述
Go 语言入门
- 1
Go语言快速入门
- 2
Go语言的优势
- 3
访问 Go 文档
- 4
编写我们的第一个程序
- 5
运行 Go 代码
- 6
Go语言的重要特性:变量
- 7
Go语言的重要特性:控制
- 8
Go语言的重要特性:循环
- 9
Go 的重要特性:获取用户输入
- 10
Go 的重要特性:错误变量
- 11
Go 的重要特性:并发模型
- 12
使用 Go 语言开发 which(1) 工具
- 13
记录信息 I
- 14
日志记录 II
- 15
Go 泛型概述
- 16
开发一个基本的电话簿应用程序
- 17
练习:Go 语言入门
- 18
解决方案:Go 语言入门
- 19
回顾:Go语言入门
基本 Go 数据类型
- 1
简介
- 2
错误数据类型
- 3
数值数据类型
- 4
非数值数据类型
- 5
整数转换:Unicode 与字符串值
- 6
字符串包
- 7
时间与日期
- 8
一个用于解析日期和时间的工具
- 9
处理不同的时区
- 10
Go 常量
- 11
分组相似数据:数组和切片
- 12
切片:长度和容量
- 13
选择切片的一部分
- 14
字节切片
- 15
从切片中删除元素
- 16
切片与数组之间的关系
- 17
copy() 函数
- 18
排序切片
- 19
指针
- 20
生成随机数
- 21
生成随机字符串
- 22
生成安全的随机数
- 23
更新电话簿应用程序
- 24
练习:基础 Go 数据类型
- 25
解决方案:基础 Go 数据类型
- 26
回顾:Go 基本数据类型
复合数据类型
- 1
简介
- 2
映射
- 3
向空 map 存值
- 4
遍历映射(Maps)
- 5
Go 结构体
- 6
结构体切片
- 7
正则表达式与模式匹配
- 8
匹配名字和姓氏
- 9
匹配整数
- 10
匹配记录中的字段
- 11
改进电话簿应用程序 I
- 12
改进电话簿应用程序 II
- 13
练习 1:复合数据类型
- 14
解决方案 1:复合数据类型
- 15
练习 2:复合数据类型
- 16
解决方案 2:复合数据类型
- 17
回顾:复合数据类型
反射与接口
- 1
简介
- 2
反射(concept)
- 3
学习 Go 结构体的内部结构
- 4
使用反射更改结构体的值
- 5
类型方法
- 6
接口
- 7
sort.Interface 接口
- 8
空接口
- 9
类型断言和类型开关
- 10
安全处理任意数据
- 11
error 数据类型(concept)
- 12
编写我们自己的接口 I
- 13
编写我们自己的接口(二)
- 14
处理两种不同的 CSV 文件格式
- 15
Go中面向对象编程的局限性
- 16
更新电话簿应用程序 I
- 17
更新电话簿应用程序 II
- 18
练习 1:反射与接口
- 19
解决方案 1:反射与接口
- 20
练习 2:反射与接口
- 21
解决方案2:反射与接口
- 22
回顾:反射与接口
Go 包和函数
- 1
简介
- 2
Go 包
- 3
函数
- 4
Go 函数中的返回值命名
- 5
接受其他函数作为参数的函数
- 6
返回其他函数的函数
- 7
可变参数函数
- 8
defer 关键字
- 9
开发我们自己的包
- 10
使用 GitHub 存储 Go 包
- 11
一个用于操作数据库的包
- 12
了解我们的数据库
- 13
Go 包的设计与实现
- 14
测试 Go 包
- 15
模块化与构建更优秀的包
- 16
生成文档
- 17
GitLab Runner 与 Go
- 18
GitHub Actions 与 Go
- 19
版本管理工具
- 20
练习 1:Go 包与函数
- 21
解决方案 1:Go 包和函数
- 22
练习 2:Go 包与函数
- 23
解决方案 2:Go 包与函数
- 24
练习 3:Go 包与函数
- 25
解决方案3:Go 包与函数
- 26
回顾:Go 包与函数
告诉UNIX系统该做什么
- 1
简介
- 2
UNIX 操作系统
- 3
处理 UNIX 信号
- 4
文件输入/输出
- 5
缓冲与非缓冲文件输入输出
- 6
读取文本文件
- 7
按单词读取文本文件
- 8
按字符读取文本文件
- 9
从 /dev/random 读取数据
- 10
从文件中读取指定数量的数据
- 11
向文件写入数据
- 12
处理 JSON
- 13
结构体与 JSON
- 14
读取和写入JSON数据流
- 15
格式化打印 JSON 记录
- 16
处理 XML
- 17
将 JSON 转换为 XML 以及反之亦然
- 18
使用 YAML
- 19
viper 包:使用命令行标志
- 20
viper 包:读取 JSON 配置文件
- 21
cobra 包 I
- 22
cobra 包 II
- 23
在 UNIX 文件系统中查找循环链接
- 24
嵌入文件
- 25
ReadDir 和 DirEntry
- 26
io/fs 包
- 27
更新电话簿应用程序
- 28
练习1:告诉UNIX系统该做什么
- 29
解决方案 1:告诉 UNIX 系统该做什么
- 30
练习2:告诉UNIX系统该做什么
- 31
解决方案2:告诉UNIX系统该做什么
- 32
练习3:告诉UNIX系统该做什么
- 33
解决方案3:告诉UNIX系统该做什么
- 34
练习 4:告诉 UNIX 系统该做什么
- 35
解决方案4:告诉UNIX系统该做什么
- 36
回顾:告诉UNIX系统该做什么
Go 并发编程
- 1
简介
- 2
进程、线程与协程
- 3
Go 调度器
- 4
GOMAXPROCS 环境变量
- 5
协程
- 6
创建多个协程
- 7
等待我们的协程完成
- 8
如果 Add() 和 Done() 的调用次数不一致会怎样?
- 9
使用协程创建多个文件
- 10
通道
- 11
从关闭的通道接收数据
- 12
通道作为函数参数
- 13
竞争条件
- 14
select 关键字
- 15
超时一个协程
- 16
关闭 Go 通道
- 17
缓冲通道
- 18
空通道
- 19
工作池
- 20
信号通道
- 21
共享内存与共享变量
- 22
如果我们忘记解锁互斥锁会发生什么?
- 23
sync.RWMutex 类型
- 24
原子包
- 25
使用协程共享内存
- 26
闭包变量与 go 语句
- 27
上下文包
- 28
使用上下文作为键值存储
- 29
信号量包
- 30
练习 1:Go 并发编程
- 31
解决方案 1:Go 并发
- 32
练习 2:Go 并发编程
- 33
解决方案 2:Go 并发
- 34
练习3:Go 并发编程
- 35
解决方案3:Go 并发
- 36
练习 4:Go 并发编程
- 37
解决方案4:Go 并发
- 38
练习 5:Go 并发编程
- 39
解决方案5:Go 并发
- 40
回顾:Go 并发编程
构建Web服务
- 1
简介
- 2
net/http 包
- 3
创建一个Web服务器
- 4
更新电话簿应用程序
- 5
使用 Prometheus 进行性能评估
- 6
暴露指标
- 7
为 Go 服务器创建 Docker 镜像
- 8
暴露所需指标
- 9
使用 Prometheus 和 Grafana 可视化指标
- 10
开发Web客户端
- 11
使用 http.NewRequest() 优化客户端
- 12
为电话簿服务创建客户端
- 13
创建文件服务器
- 14
下载电话簿应用程序的内容
- 15
超时HTTP连接
- 16
在客户端设置超时时间
- 17
在服务器端设置超时时间
- 18
练习1:构建Web服务
- 19
解决方案1:构建Web服务
- 20
练习 2:构建 Web 服务
- 21
解决方案2:构建Web服务
- 22
练习3:构建Web服务
- 23
解决方案3:构建Web服务
- 24
练习 4:构建 Web 服务
- 25
解决方案4:构建Web服务
- 26
回顾:构建Web服务
使用 TCP/IP 和 WebSocket
- 1
简介
- 2
TCP/IP
- 3
开发一个 TCP 客户端
- 4
开发一个使用 net.DialTCP() 的 TCP 客户端
- 5
开发一个 TCP 服务器
- 6
开发一个使用 net.ListenTCP() 的 TCP 服务器
- 7
开发一个 UDP 客户端
- 8
开发一个UDP服务器
- 9
开发并发TCP服务器
- 10
使用 UNIX 域套接字
- 11
UNIX 域套接字客户端
- 12
创建一个 WebSocket 服务器
- 13
服务器的实现
- 14
使用 JavaScript
- 15
创建一个 WebSocket 客户端
- 16
练习1:使用TCP/IP和WebSocket
- 17
解决方案1:使用TCP/IP和WebSocket
- 18
练习2:使用TCP/IP和WebSocket
- 19
解决方案2:使用TCP/IP和WebSocket
- 20
练习3:使用TCP/IP和WebSocket
- 21
解决方案3:使用TCP/IP和WebSocket
- 22
练习4:使用TCP/IP和WebSocket
- 23
解决方案4:使用TCP/IP和WebSocket
- 24
练习5:使用TCP/IP和WebSocket
- 25
解决方案5:使用TCP/IP和WebSocket
- 26
回顾:使用TCP/IP和WebSocket
使用 REST API
- 1
简介
- 2
REST 简介
- 3
开发 RESTful 服务器和客户端
- 4
一个 RESTful 服务器
- 5
一个 RESTful 客户端
- 6
创建一个功能完整的 RESTful 服务器
- 7
使用数据库
- 8
测试 restdb 包
- 9
实现 RESTful 服务器
- 10
测试 RESTful 服务器
- 11
创建一个 RESTful 客户端
- 12
上传和下载二进制文件
- 13
使用 Swagger 进行 REST API 文档编写
- 14
练习 1:使用 REST API
- 15
解决方案 1:使用 REST API
- 16
练习2:使用REST API
- 17
解决方案2:使用REST API
- 18
练习3:使用REST API
- 19
解决方案3:使用REST API
- 20
练习4:使用REST API
- 21
解决方案4:使用REST API
- 22
回顾:使用 REST API
代码测试与性能分析
- 1
简介
- 2
基准测试代码 I
- 3
基准测试代码 II
- 4
代码性能分析 I
- 5
代码性能分析 II
- 6
go 工具 trace 实用程序
- 7
从客户端追踪 Web 服务器
- 8
访问 Web 服务器的所有路由
- 9
测试 Go 代码
- 10
TempDir 函数
- 11
测试/快速包
- 12
测试代码覆盖率
- 13
查找无法到达的 Go 代码
- 14
使用数据库后端测试 HTTP 服务器
- 15
模糊测试
- 16
交叉编译
- 17
使用 go:generate
- 18
创建示例函数
- 19
练习1:代码测试与性能分析
- 20
解决方案1:代码测试与性能分析
- 21
练习 2:代码测试与性能分析
- 22
解决方案2:代码测试与性能分析
- 23
练习3:代码测试与性能分析
- 24
解决方案3:代码测试与性能分析
- 25
练习 4:代码测试与性能分析
- 26
解决方案4:代码测试与性能分析
- 27
练习 5:代码测试与性能分析
- 28
解决方案5:代码测试与性能分析
- 29
回顾:代码测试与性能分析
使用 gRPC
- 1
简介
- 2
gRPC 简介
- 3
定义接口定义语言文件
- 4
开发 gRPC 服务器
- 5
开发 gRPC 客户端
- 6
练习 1:使用 gRPC
- 7
解决方案 1:使用 gRPC
- 8
练习 2:使用 gRPC
- 9
解决方案2:使用 gRPC
- 10
练习 3:使用 gRPC
- 11
解决方案3:使用 gRPC
- 12
练习 4:使用 gRPC
- 13
解决方案4:使用 gRPC
- 14
练习5:使用 gRPC
- 15
解决方案5:使用 gRPC
- 16
回顾:使用 gRPC
Go 泛型
- 1
简介
- 2
我们的第一个泛型函数
- 3
约束条件
- 4
创建约束
- 5
使用泛型定义新的数据类型
- 6
在 Go 结构体中使用泛型
- 7
接口与泛型
- 8
反射与泛型
- 9
练习 1:Go 泛型
- 10
解决方案 1:Go 泛型
- 11
练习 2:Go 泛型
- 12
解决方案 2:Go 泛型
- 13
练习 3:Go 泛型
- 14
解决方案 3:Go 泛型
- 15
练习 4:Go 泛型
- 16
解决方案4:Go 泛型
- 17
回顾:Go 泛型
结论
- 1
总结
附录 A—Go 垃圾回收器
- 1
简介
- 2
垃圾回收
- 3
三色算法
- 4
关于 Go 垃圾收集器运作的更多细节
- 5
映射、切片与 Go 垃圾回收器
Certificate of Completion
Showcase your accomplishment by sharing your certificate of completion.
Course Author:Anonymous User