Go语言技术文章
-
strings.Builder 的 Grow 只保证后续写入有足够容量,并不等于最终字符串长度。本文用一段可运行的 Go 示例拆开 Grow、Cap、String 和 copyCheck 的关系,说明什么时候该预留容量、为什么不能复制非零 Builder,以及如何验证结果。307 收藏 -
本文讲解如何将 SQL 查询(如 SELECT * FROM policy)的结果按 policy_name 分组,动态构建多层级 Go 结构体(外层以策略名为键,内层为参数切片),最终序列化为符合前端预期的 JSON 格式。 这段内容主要说明一件事:怎样把 SQL 查询结果(比如 SELECT *306 收藏 -
Go 的 Header.Get 找不到请求头和找到空值时都可能返回空字符串。本文用 Header.Set、Header.Get、Header.Values 和 CanonicalMIMEHeaderKey 拆开这个边界,给出缺失判断、重复值读取与大小写处理的可运行写法。306 收藏 -
strings.Cut 把字符串拆分成 before、after 和 found 三个结果,适合处理带前缀的配置、路由和协议字段。本文用可运行示例说明空字符串边界、与 HasPrefix 的分工,以及从 Index 写法迁移时的验收方式。305 收藏 -
Go log/slog 的 HandlerEnabled 适合把动态级别判断前移。本文用 LevelVar 和请求级过滤示例,拆开日志级别、属性改写与上下文边界。304 收藏 -
本文介绍在 Go 中解析多层嵌套、键名动态的 JSON 数据时,如何避免键名丢失,通过 map[string]... 逐层解码并提取路径信息,最终映射为结构化对象。 本文介绍在 Go 中解析多层嵌套、键名动态的 JSON 数据时,如何避免键名丢失,通过 map[string]... 逐层解码并提取路303 收藏 -
用一个小型 Go 页面服务演示 embed.FS、template.ParseFS 与 HTTP 输出如何串起来,并说明模板解析缓存、错误处理和验收方式。303 收藏 -
errors.Join 可以把一次流程中的多条错误组成可检查的错误树,但日志展示、errors.Is 匹配和 errors.As 提取要分开设计。本文用批量校验示例说明组合、判断、展示与测试边界。301 收藏 -
Go 泛型函数返回切片时,真正容易踩坑的不是类型参数,而是多个切片是否共享底层数组。本文用 append、cap 和复制策略拆开容量边界,并给出可验证的安全写法。300 收藏 -
Go 的 os.File.Sync 不是每次写文件都要调用的性能开关,而是把关键写入推进到存储设备可恢复边界的明确步骤。本文用临时文件、文件同步、原子替换和目录同步拆开它的适用场景、错误处理与验收方法。300 收藏 -
用 encoding/json.Decoder 的 InputOffset 和 SyntaxError.Offset 定位坏 JSON,区分字节偏移与字符位置,并给出流式解析、UTF-8 和错误行号的可复用处理方式。299 收藏 -
用 Go archive/tar Reader.Next 读取带 PAX 稀疏扩展的归档,核对 Header.Size、空洞补零、PAXRecords 与遍历边界,并给出可复现的验收方法。299 收藏 -
用一个可复现的 Go 测试示例讲清 testing.T.Cleanup 的注册时机、后进先出顺序、子测试边界和 t.Parallel 下的安全清理方式。298 收藏 -
sync.Map.Range 适合做并发遍历,但不能当作一致性快照。本文用一个在线会话统计场景拆开 Range 的遍历语义、并发写入影响、O(N) 成本,并给出快照统计与可控停止的实现边界。298 收藏 -
Go 1.25 为 hash 包补充 XOF 接口。本文用 SHAKE 示例比较固定长度摘要与可扩展输出,说明 hash.Hash、hash.XOF、Read 和 Reset 的选择边界。298 收藏