这是我参与「第五届青训营」伴学笔记创作活动的第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的时候需要为其指定元素类型。
小结:
关于并发编程还有很多要深入了解的地方,需要课后继续巩固练习,本节课还是收获颇丰,希望可以继续一步步跟着老师学习,继续成长。