Logo
☆☆☆☆☆
0.0
Intermediate
70h

Go编程中的高级技术

Go 是当今系统编程和网络领域最受欢迎的编程语言之一。Go 通过简单的并发模型(基于 goroutine 和 channel)内置了强大的并发能力。除了丰富且可靠的标准库外,一些实用的 Go 包(如 cobra 和 viper)还使我们能够用 Go 开发功能强大的命令行工具(例如 Docker 和 Hugo)。 本课程将从 Go 的基础知识开始,涵盖语法、基本数据类型和复合数据类型等内容,随后深入学习反射、接口、函数式编程、测试和性能分析等高级概念。你还将学习如何与 UNIX 系统进行交互,并掌握设计和构建高并发系统(如 Web 服务、RESTful 服务器和 gRPC 服务器)的方法。 通过本课程,你将获得构建复杂系统所需的技术和知识,包括网络工具与服务器、数据库系统、编译器和解释器等。

16 Lessons
Included in Subscription Plan
Personalized Learning
Powered by AI
Go编程中的高级技术
Go 是当今系统编程和网络领域最受欢迎的编程语言之一。Go 通过简单的并发模型(基于 goroutine 和 channel)内置了强大的并发能力。除了丰富且可靠的标准库外,一些实用的 Go 包(如 cobra 和 viper)还使我们能够用 Go 开发功能强大的命令行工具(例如 Docker 和 ...

WHAT YOU'LL LEARN

熟悉 Go 语言的核心特性

Content

16 Lessons • 0 Quizzes • 0 Challenges

课程介绍
  1. 1

    课程概述

Go 语言入门
  1. 1

    Go语言快速入门

  2. 2

    Go语言的优势

  3. 3

    访问 Go 文档

  4. 4

    编写我们的第一个程序

  5. 5

    运行 Go 代码

  6. 6

    Go语言的重要特性:变量

  7. 7

    Go语言的重要特性:控制

  8. 8

    Go语言的重要特性:循环

  9. 9

    Go 的重要特性:获取用户输入

  10. 10

    Go 的重要特性:错误变量

  11. 11

    Go 的重要特性:并发模型

  12. 12

    使用 Go 语言开发 which(1) 工具

  13. 13

    记录信息 I

  14. 14

    日志记录 II

  15. 15

    Go 泛型概述

  16. 16

    开发一个基本的电话簿应用程序

  17. 17

    练习:Go 语言入门

  18. 18

    解决方案:Go 语言入门

  19. 19

    回顾:Go语言入门

基本 Go 数据类型
  1. 1

    简介

  2. 2

    错误数据类型

  3. 3

    数值数据类型

  4. 4

    非数值数据类型

  5. 5

    整数转换:Unicode 与字符串值

  6. 6

    字符串包

  7. 7

    时间与日期

  8. 8

    一个用于解析日期和时间的工具

  9. 9

    处理不同的时区

  10. 10

    Go 常量

  11. 11

    分组相似数据:数组和切片

  12. 12

    切片:长度和容量

  13. 13

    选择切片的一部分

  14. 14

    字节切片

  15. 15

    从切片中删除元素

  16. 16

    切片与数组之间的关系

  17. 17

    copy() 函数

  18. 18

    排序切片

  19. 19

    指针

  20. 20

    生成随机数

  21. 21

    生成随机字符串

  22. 22

    生成安全的随机数

  23. 23

    更新电话簿应用程序

  24. 24

    练习:基础 Go 数据类型

  25. 25

    解决方案:基础 Go 数据类型

  26. 26

    回顾:Go 基本数据类型

复合数据类型
  1. 1

    简介

  2. 2

    映射

  3. 3

    向空 map 存值

  4. 4

    遍历映射(Maps)

  5. 5

    Go 结构体

  6. 6

    结构体切片

  7. 7

    正则表达式与模式匹配

  8. 8

    匹配名字和姓氏

  9. 9

    匹配整数

  10. 10

    匹配记录中的字段

  11. 11

    改进电话簿应用程序 I

  12. 12

    改进电话簿应用程序 II

  13. 13

    练习 1:复合数据类型

  14. 14

    解决方案 1:复合数据类型

  15. 15

    练习 2:复合数据类型

  16. 16

    解决方案 2:复合数据类型

  17. 17

    回顾:复合数据类型

反射与接口
  1. 1

    简介

  2. 2

    反射(concept)

  3. 3

    学习 Go 结构体的内部结构

  4. 4

    使用反射更改结构体的值

  5. 5

    类型方法

  6. 6

    接口

  7. 7

    sort.Interface 接口

  8. 8

    空接口

  9. 9

    类型断言和类型开关

  10. 10

    安全处理任意数据

  11. 11

    error 数据类型(concept)

  12. 12

    编写我们自己的接口 I

  13. 13

    编写我们自己的接口(二)

  14. 14

    处理两种不同的 CSV 文件格式

  15. 15

    Go中面向对象编程的局限性

  16. 16

    更新电话簿应用程序 I

  17. 17

    更新电话簿应用程序 II

  18. 18

    练习 1:反射与接口

  19. 19

    解决方案 1:反射与接口

  20. 20

    练习 2:反射与接口

  21. 21

    解决方案2:反射与接口

  22. 22

    回顾:反射与接口

Go 包和函数
  1. 1

    简介

  2. 2

    Go 包

  3. 3

    函数

  4. 4

    Go 函数中的返回值命名

  5. 5

    接受其他函数作为参数的函数

  6. 6

    返回其他函数的函数

  7. 7

    可变参数函数

  8. 8

    defer 关键字

  9. 9

    开发我们自己的包

  10. 10

    使用 GitHub 存储 Go 包

  11. 11

    一个用于操作数据库的包

  12. 12

    了解我们的数据库

  13. 13

    Go 包的设计与实现

  14. 14

    测试 Go 包

  15. 15

    模块化与构建更优秀的包

  16. 16

    生成文档

  17. 17

    GitLab Runner 与 Go

  18. 18

    GitHub Actions 与 Go

  19. 19

    版本管理工具

  20. 20

    练习 1:Go 包与函数

  21. 21

    解决方案 1:Go 包和函数

  22. 22

    练习 2:Go 包与函数

  23. 23

    解决方案 2:Go 包与函数

  24. 24

    练习 3:Go 包与函数

  25. 25

    解决方案3:Go 包与函数

  26. 26

    回顾:Go 包与函数

告诉UNIX系统该做什么
  1. 1

    简介

  2. 2

    UNIX 操作系统

  3. 3

    处理 UNIX 信号

  4. 4

    文件输入/输出

  5. 5

    缓冲与非缓冲文件输入输出

  6. 6

    读取文本文件

  7. 7

    按单词读取文本文件

  8. 8

    按字符读取文本文件

  9. 9

    从 /dev/random 读取数据

  10. 10

    从文件中读取指定数量的数据

  11. 11

    向文件写入数据

  12. 12

    处理 JSON

  13. 13

    结构体与 JSON

  14. 14

    读取和写入JSON数据流

  15. 15

    格式化打印 JSON 记录

  16. 16

    处理 XML

  17. 17

    将 JSON 转换为 XML 以及反之亦然

  18. 18

    使用 YAML

  19. 19

    viper 包:使用命令行标志

  20. 20

    viper 包:读取 JSON 配置文件

  21. 21

    cobra 包 I

  22. 22

    cobra 包 II

  23. 23

    在 UNIX 文件系统中查找循环链接

  24. 24

    嵌入文件

  25. 25

    ReadDir 和 DirEntry

  26. 26

    io/fs 包

  27. 27

    更新电话簿应用程序

  28. 28

    练习1:告诉UNIX系统该做什么

  29. 29

    解决方案 1:告诉 UNIX 系统该做什么

  30. 30

    练习2:告诉UNIX系统该做什么

  31. 31

    解决方案2:告诉UNIX系统该做什么

  32. 32

    练习3:告诉UNIX系统该做什么

  33. 33

    解决方案3:告诉UNIX系统该做什么

  34. 34

    练习 4:告诉 UNIX 系统该做什么

  35. 35

    解决方案4:告诉UNIX系统该做什么

  36. 36

    回顾:告诉UNIX系统该做什么

Go 并发编程
  1. 1

    简介

  2. 2

    进程、线程与协程

  3. 3

    Go 调度器

  4. 4

    GOMAXPROCS 环境变量

  5. 5

    协程

  6. 6

    创建多个协程

  7. 7

    等待我们的协程完成

  8. 8

    如果 Add() 和 Done() 的调用次数不一致会怎样?

  9. 9

    使用协程创建多个文件

  10. 10

    通道

  11. 11

    从关闭的通道接收数据

  12. 12

    通道作为函数参数

  13. 13

    竞争条件

  14. 14

    select 关键字

  15. 15

    超时一个协程

  16. 16

    关闭 Go 通道

  17. 17

    缓冲通道

  18. 18

    空通道

  19. 19

    工作池

  20. 20

    信号通道

  21. 21

    共享内存与共享变量

  22. 22

    如果我们忘记解锁互斥锁会发生什么?

  23. 23

    sync.RWMutex 类型

  24. 24

    原子包

  25. 25

    使用协程共享内存

  26. 26

    闭包变量与 go 语句

  27. 27

    上下文包

  28. 28

    使用上下文作为键值存储

  29. 29

    信号量包

  30. 30

    练习 1:Go 并发编程

  31. 31

    解决方案 1:Go 并发

  32. 32

    练习 2:Go 并发编程

  33. 33

    解决方案 2:Go 并发

  34. 34

    练习3:Go 并发编程

  35. 35

    解决方案3:Go 并发

  36. 36

    练习 4:Go 并发编程

  37. 37

    解决方案4:Go 并发

  38. 38

    练习 5:Go 并发编程

  39. 39

    解决方案5:Go 并发

  40. 40

    回顾:Go 并发编程

构建Web服务
  1. 1

    简介

  2. 2

    net/http 包

  3. 3

    创建一个Web服务器

  4. 4

    更新电话簿应用程序

  5. 5

    使用 Prometheus 进行性能评估

  6. 6

    暴露指标

  7. 7

    为 Go 服务器创建 Docker 镜像

  8. 8

    暴露所需指标

  9. 9

    使用 Prometheus 和 Grafana 可视化指标

  10. 10

    开发Web客户端

  11. 11

    使用 http.NewRequest() 优化客户端

  12. 12

    为电话簿服务创建客户端

  13. 13

    创建文件服务器

  14. 14

    下载电话簿应用程序的内容

  15. 15

    超时HTTP连接

  16. 16

    在客户端设置超时时间

  17. 17

    在服务器端设置超时时间

  18. 18

    练习1:构建Web服务

  19. 19

    解决方案1:构建Web服务

  20. 20

    练习 2:构建 Web 服务

  21. 21

    解决方案2:构建Web服务

  22. 22

    练习3:构建Web服务

  23. 23

    解决方案3:构建Web服务

  24. 24

    练习 4:构建 Web 服务

  25. 25

    解决方案4:构建Web服务

  26. 26

    回顾:构建Web服务

使用 TCP/IP 和 WebSocket
  1. 1

    简介

  2. 2

    TCP/IP

  3. 3

    开发一个 TCP 客户端

  4. 4

    开发一个使用 net.DialTCP() 的 TCP 客户端

  5. 5

    开发一个 TCP 服务器

  6. 6

    开发一个使用 net.ListenTCP() 的 TCP 服务器

  7. 7

    开发一个 UDP 客户端

  8. 8

    开发一个UDP服务器

  9. 9

    开发并发TCP服务器

  10. 10

    使用 UNIX 域套接字

  11. 11

    UNIX 域套接字客户端

  12. 12

    创建一个 WebSocket 服务器

  13. 13

    服务器的实现

  14. 14

    使用 JavaScript

  15. 15

    创建一个 WebSocket 客户端

  16. 16

    练习1:使用TCP/IP和WebSocket

  17. 17

    解决方案1:使用TCP/IP和WebSocket

  18. 18

    练习2:使用TCP/IP和WebSocket

  19. 19

    解决方案2:使用TCP/IP和WebSocket

  20. 20

    练习3:使用TCP/IP和WebSocket

  21. 21

    解决方案3:使用TCP/IP和WebSocket

  22. 22

    练习4:使用TCP/IP和WebSocket

  23. 23

    解决方案4:使用TCP/IP和WebSocket

  24. 24

    练习5:使用TCP/IP和WebSocket

  25. 25

    解决方案5:使用TCP/IP和WebSocket

  26. 26

    回顾:使用TCP/IP和WebSocket

使用 REST API
  1. 1

    简介

  2. 2

    REST 简介

  3. 3

    开发 RESTful 服务器和客户端

  4. 4

    一个 RESTful 服务器

  5. 5

    一个 RESTful 客户端

  6. 6

    创建一个功能完整的 RESTful 服务器

  7. 7

    使用数据库

  8. 8

    测试 restdb 包

  9. 9

    实现 RESTful 服务器

  10. 10

    测试 RESTful 服务器

  11. 11

    创建一个 RESTful 客户端

  12. 12

    上传和下载二进制文件

  13. 13

    使用 Swagger 进行 REST API 文档编写

  14. 14

    练习 1:使用 REST API

  15. 15

    解决方案 1:使用 REST API

  16. 16

    练习2:使用REST API

  17. 17

    解决方案2:使用REST API

  18. 18

    练习3:使用REST API

  19. 19

    解决方案3:使用REST API

  20. 20

    练习4:使用REST API

  21. 21

    解决方案4:使用REST API

  22. 22

    回顾:使用 REST API

代码测试与性能分析
  1. 1

    简介

  2. 2

    基准测试代码 I

  3. 3

    基准测试代码 II

  4. 4

    代码性能分析 I

  5. 5

    代码性能分析 II

  6. 6

    go 工具 trace 实用程序

  7. 7

    从客户端追踪 Web 服务器

  8. 8

    访问 Web 服务器的所有路由

  9. 9

    测试 Go 代码

  10. 10

    TempDir 函数

  11. 11

    测试/快速包

  12. 12

    测试代码覆盖率

  13. 13

    查找无法到达的 Go 代码

  14. 14

    使用数据库后端测试 HTTP 服务器

  15. 15

    模糊测试

  16. 16

    交叉编译

  17. 17

    使用 go:generate

  18. 18

    创建示例函数

  19. 19

    练习1:代码测试与性能分析

  20. 20

    解决方案1:代码测试与性能分析

  21. 21

    练习 2:代码测试与性能分析

  22. 22

    解决方案2:代码测试与性能分析

  23. 23

    练习3:代码测试与性能分析

  24. 24

    解决方案3:代码测试与性能分析

  25. 25

    练习 4:代码测试与性能分析

  26. 26

    解决方案4:代码测试与性能分析

  27. 27

    练习 5:代码测试与性能分析

  28. 28

    解决方案5:代码测试与性能分析

  29. 29

    回顾:代码测试与性能分析

使用 gRPC
  1. 1

    简介

  2. 2

    gRPC 简介

  3. 3

    定义接口定义语言文件

  4. 4

    开发 gRPC 服务器

  5. 5

    开发 gRPC 客户端

  6. 6

    练习 1:使用 gRPC

  7. 7

    解决方案 1:使用 gRPC

  8. 8

    练习 2:使用 gRPC

  9. 9

    解决方案2:使用 gRPC

  10. 10

    练习 3:使用 gRPC

  11. 11

    解决方案3:使用 gRPC

  12. 12

    练习 4:使用 gRPC

  13. 13

    解决方案4:使用 gRPC

  14. 14

    练习5:使用 gRPC

  15. 15

    解决方案5:使用 gRPC

  16. 16

    回顾:使用 gRPC

Go 泛型
  1. 1

    简介

  2. 2

    我们的第一个泛型函数

  3. 3

    约束条件

  4. 4

    创建约束

  5. 5

    使用泛型定义新的数据类型

  6. 6

    在 Go 结构体中使用泛型

  7. 7

    接口与泛型

  8. 8

    反射与泛型

  9. 9

    练习 1:Go 泛型

  10. 10

    解决方案 1:Go 泛型

  11. 11

    练习 2:Go 泛型

  12. 12

    解决方案 2:Go 泛型

  13. 13

    练习 3:Go 泛型

  14. 14

    解决方案 3:Go 泛型

  15. 15

    练习 4:Go 泛型

  16. 16

    解决方案4:Go 泛型

  17. 17

    回顾:Go 泛型

结论
  1. 1

    总结

附录 A—Go 垃圾回收器
  1. 1

    简介

  2. 2

    垃圾回收

  3. 3

    三色算法

  4. 4

    关于 Go 垃圾收集器运作的更多细节

  5. 5

    映射、切片与 Go 垃圾回收器

Certificate of Completion

Showcase your accomplishment by sharing your certificate of completion.

Course Author:Anonymous User

Reviews

Read reviews from students who have taken this course and share your own experience.

Reviews & Comments (0)