Go语言技术文章
-
Golang · Go教程 | 6天前 | goroutine · go · pprof · 后台任务 net/http/pprof goroutineleak go tool pprof Go goroutine 泄漏剖析
用一个会遗漏 Stop 的最小后台 worker 复现 goroutine 泄漏,采集 Go 1.27 的 goroutineleak profile,定位阻塞代码并完成生命周期修复与复查。306 收藏 -
encoding/json/v2 默认拒绝 JSON 对象中的重复成员名,因为不同实现可能对重复值采用不同合并规则。本文对比 v1 与 v2 的语义,演示 AllowDuplicateNames 的兼容边界,并给出上游修复与局部适配方案。467 收藏 -
Golang · Go教程 | 6天前 | JSON · go · 兼容性 · encoding/json/v2 未知字段 jsontext.Value MarshalerTo UnmarshalerFrom
encoding/json/v2 可用 json:",embed" 将未知成员收进 map[string]jsontext.Value。实现自定义 MarshalerTo 时必须在线形态中显式携带该回退字段,本文对比三种方案并给出可复用的成对编解码实现。318 收藏 -
encoding/json/v2 解码到 any 时,JSON 数字仍默认使用 float64。本文给出两种避免精度丢失的写法:已知结构直接声明整数类型,动态结构通过 WithUnmarshalers 保留 jsontext.Value,再按业务显式转换。142 收藏 -
Go 1.27 的 encoding/json/v2 可以通过 jsontext.Decoder 和 UnmarshalDecode 逐个读取连续的顶层 JSON 值。本文用完整 Go 示例说明 io.EOF 收尾、语法与语义错误边界,并比较单值 Unmarshal、v1 Decoder 与 JSON 数组的选择。269 收藏 -
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 收藏