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

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

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

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

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

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

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

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

Read more
【Go语言避坑指南】别再混淆了类型转换(Type Conversion)如byte、byte() 与 Go 和内置函数等之间的区别

【Go语言避坑指南】别再混淆了类型转换(Type Conversion)如byte、byte() 与 Go 和内置函数等之间的区别

摘要:很多刚接触 Go 语言的同学,在写出 b := byte(65) 或者 data := []byte("hello") 时,会下意识地把 byte()[]byte() 当成“内置函数”来调用。甚至有人在面试时被问到:“Go 语言有多少个类似 byte() 的内置函数?”
这是一个非常经典且极具代表性的“语法认知误区”。今天,我们就来彻底扒开这层窗户纸,帮你建立最纯正的 Go 语言语法观。

Read more
【sqlc】零 ORM 架构: Go + Postgres + sqlc 组合原理与深度解构和实践

【sqlc】零 ORM 架构: Go + Postgres + sqlc 组合原理与深度解构和实践

近年来,一种被称为 “Zero ORM” 的架构模式正在 Go 社区悄然兴起,而其核心工具正是 sqlc。以下将从多个角度解构为什么 sqlc 会成为新宠,并通过一个完整的 CRUD Demo 帮助开发者了解这套“类型安全”的数据库开发流工具的特点以便加速开发。

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
【sort】深入解构Go标准库sort包设计原理以及实践开发中注意的要点
【os】深入解构Go标准库os包系统编程的基石以及实践开发中注意的要点

【os】深入解构Go标准库os包系统编程的基石以及实践开发中注意的要点

一、os包全景架构:从抽象到实现(函数列表)

Go的os包是连接应用程序与操作系统的桥梁,它以Unix哲学为设计基础,同时通过Go风格的错误处理机制屏蔽平台差异。为直观理解其结构,以下结构图展示了os包的核心功能以及模块划分:

Read more
【time】深入解构Go标准库time包的设计原理以及开发中注意的要点

【time】深入解构Go标准库time包的设计原理以及开发中注意的要点

一、time包架构库函数全景总览:一张图看懂time库核心构成

本文基于Go 1.25标准库,完全原创解析time包设计哲学与实战技巧,帮助新手快速彻底掌握时间处理的艺术。
time包采用分层设计,以Time结构体为核心,围绕时间表示时间计算定时器格式化四大维度构建完整生态。

Read more
【log】深入解构Go标准库log包设计原理以及实践开发中注意的要点
【fmt】深入解构Go标准库fmt包从函数全景到内核原理以及开发中注意的要点