Go语言技术文章
-
omitzero 只按 Go 零值或 IsZero 返回值省略字段。本文从标签逗号、nil 与空容器、自定义零值和 Marshal 方向定位未生效原因。180 收藏 -
encoding/json/v2 可用字段标签收窄调用级默认行为。本文通过小项目演示 string、omitempty、omitzero 与 case 选项的优先级、适用方向和测试方法。418 收藏 -
Go 1.27 支持具体类型的泛型方法,但嵌入泛型类型后仍要按实例化类型、值/指针接收者和接口固定签名计算方法集。本文用结构体与接口示例拆解常见误判,并给出排查清单。455 收藏 -
通过 Batch[T] 的 Filter、Clone 和 Map[U] 示例,说明泛型方法怎样直接复用接收者已有的 T、自动继承原约束,并判断何时才需要声明新的方法类型参数 U。417 收藏 -
Go 1.27 泛型方法调用无法推断类型参数时,先核对工具链,再检查普通参数和回调是否提供足够证据,并用显式类型实参区分推断失败、约束不匹配、方法表达式和接口边界问题。335 收藏 -
Go 1.27 支持具体类型声明泛型方法。给 Page[T] 增加 Map[U] 后,可把分页元素从模型类型映射为 DTO 类型,编译器负责推断与检查,同时统一保留总数、页码和页大小,并把转换错误明确返回。402 收藏 -
Go 1.27 已支持普通泛型方法,但接口方法仍不能声明自己的类型参数。本文用最小签名拆解报错来源,并给出工具链、go.mod、包级函数和适配器的选择方法。422 收藏 -
Go 1.27 支持方法声明自有类型参数。本文用 Box[T] 和 Map[U] 完成容器链式转换,并说明类型推断、接口与旧版本兼容边界。419 收藏 -
围绕 Go //go:embed 资源更新后仍读到旧内容的问题,区分匹配模式、构建缓存、旧进程、模块来源与容器构建上下文,并给出最小排查命令。331 收藏 -
用 Go embed.FS 把 SQL 迁移文件编译进二进制,按版本稳定排序,并通过 schema_migrations 与事务安全执行。293 收藏 -
Go 把大文件全部 embed 后,资源会进入最终可执行文件,直接放大发布体积;启动影响则取决于操作系统映射、首次读取和业务解码。本文给出构建对比、内存边界和资源拆分方法。289 收藏 -
用 Go 的 fs.FS 抽象统一前端资源访问,开发期读取本地目录,发布期切换到 embed.FS,兼顾热更新、路径安全、缓存和测试。275 收藏 -
Go 的 //go:embed 在目录模式下会递归排除点号或下划线开头的文件。本文对比目录、星号与 all: 三种模式,解释嵌套隐藏文件、模块边界和构建失败规则,并给出 WalkDir 排查方法。444 收藏 -
用一个嵌入资源适配层同时解决 Go 静态模板打包、目录前缀隔离和单元测试替换问题。文章给出 embed.FS、fs.Sub、template.ParseFS、fstest.MapFS 与 fstest.TestFS 的完整工程写法。230 收藏 -
C 回调进入 Go 时,关键不是猜线程会不会变化,而是明确运行时接入、线程局部状态、C 指针生命周期、cgo.Handle 和停机顺序。271 收藏