《Go 语言高级编程》读后感

读书总结

因为本书的每个章节的知识点缺少关联性,所以也分章节进行总结。

第一章对 Go 语言的来龙去脉,语法特性等做了一个较为详细的阐述。也对 Go 语言的数据类型都有深入的讲解,涵盖了底层细节和使用技巧。最重要的是并发一章,脱离俗套的 GMP 模型,讲述了 Go 并发的本身:并发的内存模型、并发和并行、CSP 的同步通信等等,配合书中的素数筛实例,我认为这些比起 GMP 更能让人理解 Go 的并发。

第二章 CGO 编程。快速入门中的示例程序对于我这种首次接触 cgo 的人来说看的是津津有味。只是后来大段的文档类说明有些枯燥,到实战部分就好了。这里顺便吐槽一下微信读书对于代码块的显示太差了,不能复制还没有颜色的渲染,看得眼睛都疼,还是去看作者的 gitbook 好一点。https://chai2010.cn/advanced-go-programming-book

第三章 Go 汇编语言。同样是大段文档类的说明,同样的有点枯燥,不过网上对于 Go 汇编的内容太少了,所以这里的内容还是很有价值的,值得多看几遍。这章对于我来说有些不合适的点在于出发点不一致,我现在没有场景也没有机会去自己写 Go 汇编,而是仅仅需要能看懂 Go 汇编代码,能找出一些问题就够了。希望等我有机会再看这本书时会有更大的收获。

第四章 —— 第六章。这三章的统一特点就是讲的比较浅,示例比较多。跟着走一遍也能有些收获,但还是遗憾没有深入一些。我的示例笔记:GitHub - cnbailian/Advanced-Go-Programming-examples: The《Advanced Go Programming》examples

相关文章

分享一下与本书相关的文章和书籍,可配合相关章节阅读。

1.5 面对并发的内存模型。

Go 语言作者之一 Rob Pike 对于 Go 并发的演讲:《Go Concurrency Patterns》 —— Rob Pike

1.6 常见的并发模式

Rob Pike 对于并发不是并行的演讲:《Concurrency is not Parallelism》 —— Rob Pike

通过 WebGL 动画详细的讲解 Go 并发,素数筛对应书中的示例:《Visualizing Concurrency in Go》 —— divan

3.1 快速入门

推荐本书作者之一曹大的文章:《Go 系列文章3 :plan9 汇编入门》 —— cch

5.2 请求路由

关于本章中提到的 REST 接口风格,如果感兴趣,可以看下我的推荐文章。

本篇文章是 REST 实践指南,如果想实现一个较好的 REST 风格结构,基本上看这篇文章就够了。《Best Practices for Designing a Pragmatic RESTful API》 —— Vinay Sahni

如果对 REST 本身感兴趣,可以读一读 REST 的出处论文:Fielding 博士的论文,译者李锟。《架构风格与基于网络的软件架构设计》

英文原版:《Architectural Styles and the Design of Network-based Software Architectures》 —— Roy Thomas Fielding

5.4 请求校验

本章提到的“卫语句”在《Go 语言实战:编写可维护 Go 语言代码建议》中有过类似的描述,称为“视线”编码,都是为了解决深层嵌套问题。同时推荐这篇文章,里面的建议都很有用。

5.7 常见大型 Web 项目分层

本章提到的 MVC 架构相对简单,可能难以应对复杂的业务场景。推荐《Clean Architecture》这本书,里面提到的整洁架构也是分层的架构设计,但能更好的解耦,解决依赖问题。

领域驱动设计(DDD)的学习成本更高,但应该能更好的处理复杂业务逻辑:

经典之作,学习起来很困难:《领域驱动设计》

infoq 推出的精简版,容易入门:《领域驱动设计精简版》

附录A A.8

Go 在 1.14 版本后增加了抢占式调度,不会再被死循环的 Goroutine 影响正常调度:《Under The Hood》6.8.2 抢占式调度

1赞

?? 大家完成情况都在这里发? :astonished:

《Go 高级编程语言》读书计划

完成情况

  1. 记录的一些代码
    https://github.com/lvsoso/go_advance_programing.git
  2. 计划的练手项目

调研了一下,用go-zero做服务端,正好可以学习一下,然后用go的gui包fyne做个桌面app(主要是对前端不熟,另外想用Go一套搞定可能快些)。
目前只完成了注册部分前后端联调 :rofl:

规划
go_advance_programing/chat_demo.drawio at main · lvsoso/go_advance_programing · GitHub
服务端
go_advance_programing/chat_demo at main · lvsoso/go_advance_programing · GitHub
桌面
go_advance_programing/app at main · lvsoso/go_advance_programing · GitHub

:sweat_smile: 不用都在这里发,只不过是我先发了,抢了个好标题