Golang 少用 Interface 的哲学:奥卡姆剃刀下的工程实践,删掉不必要的Interface

Golang 少用 Interface 的哲学:奥卡姆剃刀下的工程实践,删掉不必要的Interface

其实个人很反对Golang所谓的“面向接口编程”的这种话术推广理念,这对新手来说是一种严重的误导性,编程语言里有很多类似的Slogan也有各种类似的营销话术上的问题,例如Java的那句“一切皆对象”,这话虽然对但强化传达理念的同时又让新手开发者陷入一种潜意识迷茫,往往容易削足适履。

“如无必要,勿增实体。” —— 奥卡姆剃刀定律

Interface 应该定义在消费方,而不是生产方。

Go Interface本身并不是用来“组织代码层级”的,这是interface被“滥用”的根源。

Go 的 interface 被滥用的根源,不是开发者不会写 interface,而是把 interface 当成了组织代码层级、分层结构、模块边界的工具。

实际上,反直觉的是:代码层级本身并不需要 interface 来证明。

Read more
Go类型转换:隐式陷阱与显式安全:Golang 类型转换深度解构指南

Go类型转换:隐式陷阱与显式安全:Golang 类型转换深度解构指南

Go 语言的类型转换机制初看繁琐,强类型可以增强程序健壮性。

作为开发者,掌握类型转换的核心不在于背诵语法,而在于建立“类型安全意识”

  1. 看见不同即报警:类型不同,必有原因。
  2. 转换即成本:无论是 CPU 的溢出检查还是内存的复制,都有代价。
  3. 显式即文档:你的转换代码告诉阅读者,你清楚这里发生了什么。
Read more
【generics】深入理解Go语言泛型:从标准库演进到工程实践

【generics】深入理解Go语言泛型:从标准库演进到工程实践

Go语言在2022年3月发布的1.18版本中正式引入泛型特性,标志着这门以简洁著称的语言迈入类型安全与代码复用的新纪元。本文将系统解析泛型在标准库中的实践、版本演进脉络及工程化应用要点,助你构建坚实的泛型编程能力。
Go泛型的设计哲学始终围绕”实用性优先”:不追求理论完备性(如不支持泛型方法、特化),而是解决真实工程痛点。从1.18的谨慎引入到1.25的系统优化,泛型已从”实验特性”蜕变为Go生态的基石能力。

Read more
Golang CHANGELOG History(截至 2025.11.07 的完整变更日志 Changelog)
Go:interface 原理详解-接口由使用者定义,而不是由实现者定义。

Go:interface 原理详解-接口由使用者定义,而不是由实现者定义。

接口设计模式的常见疑惑

Golang 接口由使用者定义,而不是由实现者定义。开发常见的疑惑:“如果接口是使用者定义的,那使用者怎么知道实现者有没有那个方法?会不会猜错?是不是反而更难用了?”

这个问题是很多人的困惑,而且触及了 Go 接口设计哲学中最容易让人困惑的核心矛盾:

Read more
Proverbs from @rob_pike's inspiring talk at Gopherfest SV 2015 (video)
Go:rune 深度解析:从 Unicode 码点到字符串遍历的艺术

Go:rune 深度解析:从 Unicode 码点到字符串遍历的艺术

rune 的设计哲学

层面Go 的选择开发者收益
存储字符串 = UTF-8 字节序列兼容性高,节省空间(ASCII 高效)
操作rune = Unicode 码点逻辑清晰,避免字节错误
遍历range 自动解码 UTF-8开箱即用,安全可靠
扩展标准库 + x/text 生态支持归一化、断行、排序等高级需求

Go 之父 Rob Pike 的名言
“UTF-8 is the native text format of Go. Strings are UTF-8. Period.”
rune,正是我们与这个“原生格式”对话的桥梁。

Read more
Go:package time
Go:type 关键词总结
Go:switch

Go:switch

switch

switch 注意事项

  • fallthrough 不能用在 switch 的最后一个分支。