Go语言进阶 | 青训营笔记

196 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

一、本堂课重点内容:

  • 本堂课的知识要点有哪些?
  1. 并发编程
  2. 依赖管理
  3. 单元测试
  4. 项目实战

二、详细知识点介绍:

本堂课介绍了哪些知识点?

并发编程

  • 协程Goroutine

    Go 语言内置了 goroutine 机制,使用goroutine可以快速地开发并发程序, 更好的利用多核处理器资源。

  • 通道Channel

    通道就是goroutine之间的通道。它可以让goroutine之间相互通信。

    每个通道都有与其相关的类型。该类型是通道允许传输的数据类型。

  • 锁Lock pkg.go.dev/sync

    Go语言包中的 sync 包提供了两种锁类型:sync.Mutex 和 sync.RWMutex。

    Mutex 是互斥锁,当一个 goroutine 获得了 Mutex 后,其他 goroutine 就只等到这个 goroutine 释放该 Mutex。

    每个资源都对应于一个可称为 “互斥锁” 的标记,这个标记用来保证在任意时刻,只能有一个协程(线程)访问该资源。其它的协程只能等待。

  • 线程同步WaitGroup pkg.go.dev/sync

  • 依赖管理

  • Gopath

  • Go Vendor

  • Go Module : go.dev/blog/using-…

了解Go依赖管理演进的历程,通过课程学习以及课后实践能能够熟练使用go module 管理依赖。

image.png GOPATH 模式

所有工程代码要求放在GOPATH/src目录下`
工程本身也将作为一个依赖包,可以被其它 GOPATH/src 目录下的工程引用
在 $GOPATH/src 下进行 .go 文件或源代码的存储,我们可以称其为 GOPATH 的模式

vendor 特性/模式 (三方)

解决 GOPATH模式 所有项目都在$GOPATH/src目录的问题
可以随处可以创建项目,不用扎堆 src 目录下

 Go Modules 模式(模块感知模式)

  1. GOMODULE模式下所有依赖的包存放在$GOPATH/pkg/mod目录下
  2. 项目中需要有go.mod文件,来应用$GOPATH/pkg/mod

单元测试

三、实践练习例子:

有什么实践举例帮助理解知识点?

社区话题页面需求描述

  • 展示话题(标题,文字描述)和回帖列表
  • 暂时不考虑前端页面实现,仅仅实现一个本地web服务
  • 话题和回帖数据用文件存储

Moonlight-Zhao/go-project-example at V0 (github.com)

四、课后个人总结:

  • 本章有什么知识点不容易掌握?
  • 什么地方容易与其他内容混淆?

五、引用参考:

  • 我参考了哪些外部博客/笔记/文章?
  • 文章中有什么地方是我参考引用了外部博客/笔记/文章的?