Go问答技术文章
-
用 Go 标准库 log/slog 的 LogValuer 隐藏请求凭据,厘清 WithAttrs 预处理与 Value.Resolve 展开的边界,避免把密码和令牌写进结构化日志。247 收藏 -
Go 通过 cgo.Handle 把 Go 值暂存给 C 侧时,关键不是把指针强行塞过去,而是明确句柄的创建、回调取值和 Delete 释放边界。本文用一个回调桥接例子说明生命周期、并发与异常清理。308 收藏 -
Go 1.24 新增的 strings.FieldsSeq 返回 iter.Seq[string],按 unicode.IsSpace 识别连续空白并逐项产生字段。本文对比 Fields,说明空文本、Unicode 空白、提前停止和结果保存的边界。494 收藏 -
sync.Map.Range 适合遍历某个时刻可见的键值,但不能把回调结果当成并发集合的稳定快照。本文拆开 Store、Delete 与 Range 同时发生时的可见性边界,并给出需要一致结果时的替代方案。344 收藏 -
Go 的 log/slog.Attr.Equal 适合做日志属性去重和断言,但组属性、数值类型与空值的比较边界容易被忽略。本文从字段和值的关系出发,给出紧凑写法和检查要点。248 收藏 -
Go 1.23 引入的 slices.Values 可以把切片暴露为 iter.Seq。本文用同一段可运行示例验证 range 消费、空切片和提前 break 的行为,并说明它与直接遍历切片的边界。487 收藏 -
Go 1.23 引入的 slices.Sorted 会收集迭代器值并返回新的有序切片。本文用同一段可运行代码核对排序结果、原切片是否被修改以及空输入行为。288 收藏 -
用同一段 Go 示例生成 RSA、ECDSA、Ed25519 和 X25519 公钥,验证 MarshalPKIXPublicKey 与 ParsePKIXPublicKey 的返回类型、接口断言和 DER 格式边界。408 收藏 -
Go 的 os.File.Sync 用来把当前文件内容提交到稳定存储,但它不是 Close 的替代品。本文用同一段程序验证 Write、Sync、Close 的职责边界,并给出错误处理和落盘场景的判断方法。442 收藏 -
Go 的 crypto/cipher.NewGCMWithRandomNonce 会为每次 Seal 自动生成 12 字节 nonce,并把 nonce 放在返回密文的最前面。本文用同一个 AES-GCM 示例核对密文布局、Open 的切片方式、附加数据校验和旧代码迁移边界。334 收藏 -
用同一份 Go 示例对比 len、utf8.RuneCountInString 和逐 rune 遍历,验证中文、emoji 与非法 UTF-8 的计数差异,并给出按字符截断时不切断编码的方法。406 收藏 -
用同一份 HTTP 请求验证 Request.CookiesNamed 的同名 Cookie 筛选、返回顺序、空切片和 Cookie 方法的单值差异,说明 Go 1.23 之后如何安全读取重复 Cookie。322 收藏 -
用同一份 PNG 输入验证 image/png.DecodeConfig 的尺寸读取、Reader 消费位置和 Decode 配合方式,解释 bytes.Reader、Seek 与不可回退流之间的边界。185 收藏 -
Go 1.23 引入的 unique.Make 可以把可比较值规范化为 Handle。本文用同一组重复字符串复现实例,核对句柄相等、Value 取回和可回收缓存的边界。200 收藏 -
Go 使用 html/template 渲染表单时,校验失败不应只返回一句错误文本。本文用一个注册表单拆开 POST 分支、FormData 回填、字段级错误与焦点提示的调用链,并给出可回归的实现边界。116 收藏