这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天
额,怎么说呢,感觉自己还是好菜,蜻蜓点水提纲式的课程对于go零基础的有亿点点费劲。建议以后青训营把go语言基础的资料提前放出来让大家提前学习吧,不然真的有点点费劲。。。
一、本堂课重点内容:
- Go语言的进阶应用
- Go语言的工程实践
二、详细知识点介绍:
- Go语言本身很适合高并发,有更高效的并发调度模型
- 协程:用户态、资源少、go本身就可以创建、轻量级线程、栈空间MB级别
- 线程:内核态、资源多、线程可有创建多个协程、栈空间KB级别
- 启动go的协程goroutine只需要在函数前加go即可
- go提倡用通信实现共享内存,而不是用共享内存实现通信,但是两个方法都可以用
- 通过channel实现通信,make(chan int)无缓冲通道,make(chan int, 3)有缓冲通道
- 协程的简单实例,其中defer是延迟执行语句,在所在函数执行的最后才执行defer(真好用,还不容易出错)
- 互斥的大数累加例子(并发安全)
- waitgroup 并发任务的同步,其内部就是一个计数器,当创建一个协程add,计数器+1,协程结束Done()计数器-1,最后Wait()等待计数器为0
三、个人总结:
- 额,还是感觉每天要学的资料好多啊orz,不过这两节课真的能感受到go比c++简单的多得多。有点动心转go赛道了。
- 每天这么摁着学也不是办法,明天整个计划出来,不然遥遥无期自己学着也累