Go问答技术文章
-
Go time.Date 遇到夏令时回拨时,同一个本地墙上时间可能对应两个实际时刻。本文说明 Date 的不确定性,并用 Time.Equal、UTC、Unix 秒和明确偏移建立可靠的判断与存储方式。343 收藏 -
runtime.KeepAlive 本身没有错误返回值。本文从受保护的资源操作入手,说明如何保留 n 和 err,再用 errors.Is、errors.As 区分中断、句柄失效与其他底层原因,并把 KeepAlive 放在正确的生命周期边界。341 收藏 -
Go regexp.FindAllStringIndex 返回非重叠区间是设计行为,不是漏查。本文用 aba/ababa 说明左到右的匹配推进、n 参数的真实作用和 UTF-8 字节下标,并给出按 rune 起点推进的外部游标方案来收集重叠结果。341 收藏 -
Go flag.BoolFunc 每次遇到开关都会回调。通过 ParseBool 与局部累计对象保留重复布尔值,区分出现次数、真值次数和最后状态,并说明显式 false、解析错误与状态重用的边界。340 收藏 -
用 Go os.Root 和 Root.Open 把外部文件名限制在可信目录树内,说明 OpenFile、Root.FS、资源关闭与挂载边界。339 收藏 -
ECDSA 公钥不能直接当作 ecdh.PublicKey 的原始字节使用。本文用 Go 标准库说明 PKIX 公钥解析、ecdsa.PublicKey.ECDH 转换、共享密钥验证,以及 invalid public key 的常见边界。338 收藏 -
Go crypto/ecdh 的 ECDH 曲线不匹配,通常是本地私钥与远端公钥使用了不同 Curve。本文区分 NewPublicKey 解析错误和 ECDH 曲线错误,给出统一曲线、接收公钥和生产排查清单。336 收藏 -
go test -shuffle 暴露资源残留时,如何识别共享夹具的顺序依赖,用测试作用域管理文件与后台任务,并保存种子复查清理结果。332 收藏 -
围绕 Go sync.Pool 结果不稳定的常见现象,解释 Get 的任意取值、对象自动移除、初始化清理、所有权边界和业务状态选型,给出可复用的缓冲区排查思路。331 收藏 -
io.MultiReader 会把多个 Reader 顺序拼成一条流,中间 Reader 的 EOF 会被内部消费,调用方只能看到最终 EOF。本文用包装 Reader 记录每个文件的结束事件和字节数,并说明错误处理、文件关闭与不应合并的场景。329 收藏 -
解释 Go png.Encoder 的四个 CompressionLevel 如何影响 PNG 编码耗时和输出大小,给出实时接口、静态资源与实验基线的选择方法,并说明零值、未知值和精确字节序列的兼容边界。325 收藏 -
Go filepath.EvalSymlinks 返回错误时,不要只比较错误字符串。本文用 errors.Is 区分不存在和权限,用 errors.As 读取 PathError 的操作与路径,并说明非目录组件、损坏链接、循环链接等边界。324 收藏 -
slices.Delete 的结果看似不稳定,通常来自忽略返回值、共享底层数组、len/cap 误判或并发读写。本文用 Go 示例和排查表说明稳定删除区间、处理尾部引用与隔离数据竞争的方法。315 收藏 -
crypto/ecdh 没有 ParsePrivateKey,Bytes 的原始私钥字节应通过指定曲线的 NewPrivateKey 恢复。示例保存格式版本、曲线与 Base64 载荷,并解释原始编码与 PKCS#8 的区别。309 收藏 -
ParseRequestURI 面向 HTTP 请求中的绝对 URI 或绝对路径;如果把不带协议的 host/path 当成完整 URL,解析就会失败。本文用 Go 示例区分它与 url.Parse 的适用边界。307 收藏