Go语言进阶|青训营笔记

57 阅读2分钟

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

额,怎么说呢,感觉自己还是好菜,蜻蜓点水提纲式的课程对于go零基础的有亿点点费劲。建议以后青训营把go语言基础的资料提前放出来让大家提前学习吧,不然真的有点点费劲。。。

一、本堂课重点内容:

  • Go语言的进阶应用
  • Go语言的工程实践

二、详细知识点介绍:

  • Go语言本身很适合高并发,有更高效的并发调度模型
  • 协程:用户态、资源少、go本身就可以创建、轻量级线程、栈空间MB级别
  • 线程:内核态、资源多、线程可有创建多个协程、栈空间KB级别
  • 启动go的协程goroutine只需要在函数前加go即可
  • go提倡用通信实现共享内存,而不是用共享内存实现通信,但是两个方法都可以用

QQ截图20230116221849.png

  • 通过channel实现通信,make(chan int)无缓冲通道,make(chan int, 3)有缓冲通道
  • 协程的简单实例,其中defer是延迟执行语句,在所在函数执行的最后才执行defer(真好用,还不容易出错) QQ截图20230116222935.png
  • 互斥的大数累加例子(并发安全) QQ截图20230116232928.png
  • waitgroup 并发任务的同步,其内部就是一个计数器,当创建一个协程add,计数器+1,协程结束Done()计数器-1,最后Wait()等待计数器为0 QQ图片20230116233425.png

三、个人总结:

  • 额,还是感觉每天要学的资料好多啊orz,不过这两节课真的能感受到go比c++简单的多得多。有点动心转go赛道了。
  • 每天这么摁着学也不是办法,明天整个计划出来,不然遥遥无期自己学着也累