Go语言进阶-工程进阶 | 青训营笔记

93 阅读2分钟

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

初期准备

把前面的go语言基础语法复习一遍后,开始学习这一节课的学员笔记,本节课程主要分为以下四个方面: 并发编程、依赖管理、单元测试和项目实战,虽然比较基础,但是对于新人来说由于语言和概念的不熟悉,还是有些许的挑战。

并发编程:

Go语言的并发通过goroutine实现。goroutine类似于线程,属于用户态的线程,我们可以根据需要创建成千上万个goroutine并发工作。goroutine是由Go语言的运行时(runtime)调度完成,而线程是由操作系统调度完成。

Go语言中使用goroutine非常简单,只需要在调用函数的时候在前面加上go关键字,就可以为一个函数创建一个goroutine。一个goroutine必定对应一个函数,可以创建多个goroutine去执行相同的函数。启用goroutine的示例: func hello() { fmt.Println("Hello Goroutine!") } func main() { hello() fmt.Println("main goroutine done!") }

如果说goroutine是Go程序并发的执行体,channel就是它们之间的连接。channel是可以让一个goroutine发送特定值到另一个goroutine的通信机制。goroutine之间通信通过channel,类似进程之间通信通过队列。

Go 语言中的通道(channel)是一种特殊的类型。通道像一个传送带或者队列,总是遵循先入先出(First In First Out)的规则(队列?很像!),保证收发数据的顺序。每一个通道都是一个具体类型的导管,也就是声明channel的时候需要为其指定元素类型。

小结:

关于并发编程还有很多要深入了解的地方,需要课后继续巩固练习,本节课还是收获颇丰,希望可以继续一步步跟着老师学习,继续成长。