Go语言技术文章
-
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 收藏 -
Go 用 crc64.New 创建 hash.Hash64 后,可以把文件分块写入同一个哈希状态,再通过 Sum64 取得最终校验和。本文用 io.CopyBuffer 实现固定内存的流式读取,并说明错误处理、分段续算、算法表和结果比较的边界。462 收藏 -
Go recover 必须在发生 panic 的同一 goroutine 中由延迟函数直接调用,父函数不能恢复子任务 panic。通过同步与异步示例解释恢复位置、命名返回值和 Result 回传,并保留堆栈、明确数据一致性与新任务边界。461 收藏 -
用 Go 的 http.Pusher 接口断言和 Push 返回值判断 HTTP/2 服务端推送能力,并为 HTTP/1.1、客户端禁用推送和中间层降级保留普通响应路径。461 收藏 -
Go heap 修改优先级后顺序不变,通常与未调用 Fix、修改副本或使用旧索引有关。本文用任务队列说明位置表、Swap 与 Pop 的职责及并发边界。461 收藏 -
TestMain 控制包级测试入口,错误的 os.Exit 可能覆盖子测试失败状态。本文说明正常返回的退出语义、保留 m.Run 结果的方法,以及辅助函数清理、CI 状态传播和并行子测试的边界。461 收藏