左耳朵耗子聊聊Go语言那些事儿还有Docker和新玩意儿的折腾
- 问答
- 2026-01-01 07:34:06
- 3
(来源:左耳朵耗子陈皓在极客时间的专栏文章、微博分享及部分技术社区互动内容综合整理)
左耳朵耗子,也就是陈皓,以前经常聊他使用Go语言和Docker这些技术时的真实感受和折腾经历,他不是那种光说好话的人,总是有啥说啥,带点刺儿,但很实在。
关于Go语言,他是这么聊的:
他说,Go语言最开始吸引他的地方就是“简单”,这个简单不是说功能弱,而是指语言特性少,学起来快,用起来直接,他比喻说,像C++或者Java,里面各种复杂的特性,比如继承、泛型(当时Go还没有)、异常处理等等,搞得像一座大城堡,进去容易出来难,而Go就像个小平房,一眼能看到头,没啥隐藏的角落,这对于团队协作和项目维护来说是巨大的优势,因为代码写出来都长得差不多,可读性强,新手也能很快上手。
但他也吐槽Go语言,最大的一个槽点就是在早期版本里没有泛型,他举过例子,说你要写个操作各种类型数组的函数,没有泛型就得用interface{},然后各种类型断言,搞得代码又丑又容易出错,他觉得这违背了“工程效率”的初衷,因为程序员得花很多时间在绕开语言限制上,而不是解决问题本身,所以当后来Go终于加入泛型时,他虽然觉得来得太晚,但也承认是补上了一个重要的短板。
另一个他常提的点是Go的并发模型,就是goroutine和channel,他觉得这个设计非常棒,轻量级的goroutine让写并发程序像写顺序程序一样简单,大大降低了并发编程的心智负担,他常说,用其他语言你可能要小心翼翼地管理线程池,生怕开多了把系统搞崩,但在Go里,你几乎可以随心所欲地开goroutine,只要你的逻辑清晰,但他也提醒,这不代表可以乱来,channel用不好照样会死锁,资源管理不当也会出问题,关键是要理解“通过通信来共享内存,而不是通过共享内存来通信”这个哲学。
关于Docker和他的折腾:
耗子叔对Docker这类容器技术是非常推崇的,他认为Docker带来的不仅仅是一个轻量级的虚拟化工具,更重要的是一种思想和标准,他经常说,Docker把应用和它的运行环境打包在一起,解决了“在我这儿好好的,在你那儿怎么就坏了”这个千古难题,这极大地简化了部署和运维,为微服务架构的普及铺平了道路。
他分享过自己折腾Docker的经历,他会去深入研究Docker的底层技术,像Linux的cgroups和namespace,搞清楚容器到底是怎么实现隔离的,他不满足于只会用docker run这种命令,而是会去琢磨镜像的分层结构、联合文件系统是怎么工作的、网络模式有啥区别,他觉得只有这样,才能在出问题的时候知道从哪里下手排查,而不是瞎猜。
他还喜欢用Docker来搭建各种开发环境和玩一些新玩意儿,他会用一个Dockerfile就把一个复杂的、依赖很多组件的开发环境(比如一个完整的Web应用栈:数据库、缓存、消息队列、应用服务器)给定义出来,这样,新同事来了,根本不用花半天时间配环境,直接一条命令就能得到一个一模一样的开发环境,效率超高。
对于当时刚兴起的Kubernetes,他也投入了很多精力去研究,他认为Docker解决了单个应用的打包问题,而Kubernetes解决的是大规模部署和管理这些应用的问题,他折腾K8s集群,研究它的调度策略、服务发现、弹性伸缩,然后把踩到的坑和心得分享出来,他常说,技术人要保持好奇心,要敢于折腾这些新东西,但折腾的目的不是为了追新潮,而是要理解它背后的原理和能解决的实际问题。
总结一下他的态度:
左耳朵耗子聊这些技术,核心思想一直很明确:技术是为人服务的,是用来提高效率和解决问题的,他欣赏Go语言的务实和工程化导向,尽管它不完美;他拥抱Docker和容器技术带来的变革,并深入底层去理解它,他鼓励程序员不要只做API的调用者,而要成为理解原理的“折腾者”,这样才能在技术飞速发展的今天保持竞争力,他的分享总是带着一种“老司机”的坦诚和洞察,好坏都说,干货满满。

本文由酒紫萱于2026-01-01发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://www.haoid.cn/wenda/72325.html
