Go语言技术文章
-
Golang · Go教程 | 1个月前 | 标准库 · 配置管理 · 并发编程 · go语言 · 工程实践 · Go并发 延迟加载 配置快照 sync.OnceValue sync.OnceValues
sync.OnceValue 适合把只加载一次的固定配置封装成并发安全的延迟函数。本文给出值语义快照写法,并说明引用类型、错误缓存、panic 重放、日志和热更新边界。462 收藏 -
Go url.PathEscape 直接处理路径片段时会把斜杠编码为 %2F;如果观察到斜杠,通常是读取了解码后的 URL.Path,或混用了路径拼接与查询参数编码。本文用最小示例区分 PathEscape、QueryEscape、RawPath 和 EscapedPath。462 收藏 -
通过容量与新增元素数量判断 Go append 是否复用底层数组,结合切片别名、元素地址和限容示例区分长度变化、共享写入与重新分配,并说明显式复制和函数返回值的使用边界。462 收藏 -
Go filepath.IsLocal 只判断路径的词法局部性,不保证符号链接、文件存在或访问权限安全。本文说明原始输入校验、Clean 与 Join 的使用顺序及业务边界。462 收藏 -
Go bytes.SplitSeq 返回 iter.Seq[[]byte],适合按分隔符逐段消费并在满足条件后提前停止。本文说明它与 bytes.Split 的差异、空分隔符和字节片段生命周期边界。462 收藏 -
Go crypto/ecdh.PrivateKey.Equal 用于判断两个私钥对象是否代表同一把 ECDH 私钥。本文说明同一曲线、类型匹配、常量时间比较和 Bytes 编码之间的边界。462 收藏 -
Go expvar 可以把自定义运行时变量以 JSON 形式暴露出来。本文用 NewInt、NewMap 和 Publish 说明怎样注册指标、挂载 Handler、处理名称冲突,并控制 /debug/vars 的生产暴露边界。462 收藏 -
UTF-32 的四字节单元仍可能是代理项、超范围值或被错误字节序解释。本文给出固定小端的严格导入示例,说明默认解码替换行为、BOM 策略和失败偏移。462 收藏 -
Go 将 CGO_ENABLED 设为 0 后,报错不一定来自链接阶段。本文按文件选择、编译和链接三层拆分现象,使用 go env 与 go list 判断 cgo 文件是否被排除,再根据外部符号、目标平台和预编译库选择修复方向。462 收藏 -
讲清 Go httptrace.WroteHeaderField 观察的请求头写入边界,并给出脱敏、并发安全和 WroteRequest 配合记录的实现方式。462 收藏 -
Go 升级后 go test -shuffle 下出现行为变化,先不要把失败归因于随机数。本文比较关闭随机化、固定 seed、子测试缩小范围和并行复查四种定位方式,帮助你把顺序依赖与工具链差异拆开。462 收藏 -
Go encoding/json 的 Decoder 可以连续读取多个顶层 JSON 对象。本文给出可复用的 Decode 循环,区分空输入、正常 EOF、截断 JSON、语法错误和字段类型错误,并说明 InputOffset 与 More 的使用边界。462 收藏 -
Go http.Client 请求超时却没有按预期结束,常见原因是使用了零值 Timeout、忽略了响应体读取阶段,或把 HTTP 状态错误误当成传输错误。本文用 httptest 构造延迟响应头的最小复现,并对比 Client.Timeout 与请求级 Context 的使用边界。462 收藏 -
Go/types.Signature 的 TypeParams 描述函数或方法自身的类型参数,RecvTypeParams 描述泛型方法接收者的类型参数。本文用泛型函数、泛型类型方法和 NewSignatureType 说明两者的读取与构造边界。462 收藏 -
Go token.FileSet.Iterate 会按文件基址升序遍历多个源码文件。本文说明 AddFile 注册的基址、大小和末端范围,并给出导出 FileRange 报告的实用写法,避免把全局 Pos 误当成文件内字节偏移。462 收藏