本文是「从 C++ 到 Go」系列的第三篇,承接上一篇对集合、结构体与接口的讨论,进入 Go 最有特色的两个领域——并发模型与错误处理。对于 C++ 程序员来说,这两部分恰好是思维转换最大的地方:并发从「手动管理线程和锁」变成「goroutine + channel」,错误处理从「异常冒泡」变成「错误即返回值」。
从 C++ 到 Go(二):集合、结构体与接口
从 C++ 到 Go(一):基础语法、类型系统与函数
对于有 C++ 经验的程序员来说,学习 Go 是一次有趣的体验。Go 在许多设计上与 C++ 有着相似的底层思路,但又在语法和哲学上做出了截然不同的取舍。本文是我学习 Go 的实践笔记,以代码为主线,穿插与 C++ 的对比,力求在「知其然」的同时也「知其所以然」。
光与影的魔术②:微距摄影的景深·一个反直觉的结论
摄影,说到底,是在处理光与空间的关系;不过,一旦进入微距,这件事会变得有点「反直觉」。