Go语言技术文章
-
用 Go 的 json.Decoder 连续读取多个 JSON 对象,区分 io.EOF 正常结束与格式、类型错误,并给出文件和 HTTP Reader 的接入写法。164 收藏 -
用一次 os.OpenRoot 复用目录根对象,逐个读取直接子文件并及时关闭,结合有界读取、逐项错误与根关闭错误,说明多文件批处理的资源归属和恢复边界。164 收藏 -
Go 中应用 JSON Patch 的关键是先用 DecodePatch 解析 RFC 6902 操作数组,再用 Apply 或 ApplyWithOptions 作用到原始 JSON 文档,并明确缺失路径、copy 扩张和业务校验的边界。164 收藏 -
gojq.Iter 的 Next 返回 any 和 bool,error 也会作为一项被迭代出来。本文解释这种设计的原因,并给出普通错误、HaltError 与结束信号的处理写法。164 收藏 -
go-message 遇到未知字符集时仍可能返回可用的 Reader 或 Part。本文说明如何识别可恢复错误、继续遍历邮件,并为无法解码的正文保留安全降级路径。164 收藏 -
Go time.Time.AddDate 按日历字段移动日期,不等于固定增加若干小时。本文解释跨月归一化、Location 与夏令时造成的时长差异,并给出 Add 与 AddDate 的选择边界和回归检查思路。164 收藏 -
Go sync.Cond.Wait 必须在持有 Cond.L 时调用。本文说明 Wait 原子释放与重新加锁的边界、为什么要用 for 重新检查条件,以及状态修改、通知和 channel 选择的实用判断。164 收藏 -
用%w保留Go crypto/aes初始化错误,通过errors.As识别KeySizeError,区分调用阶段,并设计不泄露密钥的内部诊断和对外提示。164 收藏 -
Go读取ZIP的UTF-8声明应检查Flags第11位,文件名字节合法性与NonUTF8则需分别理解。本文提供只读观察程序,并解释ASCII、中文名称、注释和写入标志的差异。163 收藏 -
Go 接口只有具体类型和值都为空时才等于 nil。本文用最小示例说明 typed nil 指针装进 error 或 any 后为何仍然非 nil,并给出返回、排查和 reflect 的稳妥写法。163 收藏 -
Go 处理 tag=go&tag=web 这类重复查询参数时,应使用 url.Values 的切片模型:用 Add 追加、用 values[key] 读取全部值、用 ParseQuery 检查解析错误,并注意 Encode 的键名排序边界。163 收藏 -
Go net/http.Transport结果不稳定时,先区分传输错误、HTTP状态与正文变化。文章说明连接复用和响应体处理误区,给出有界GET诊断示例,并用httptrace记录复用线索。163 收藏 -
使用 Go crypto/x509 校验证书链时,VerifyOptions.KeyUsages 为空默认按服务器用途处理;为了让配置意图更清楚,可以显式设置 ExtKeyUsageServerAuth,并配合 Roots、Intermediates 和 DNSName 分层排查失败原因。163 收藏 -
Go 的 net.IP.To4 返回 nil,并不只代表输入一定是非法地址:纯 IPv6 会返回 nil,而 IPv4-mapped IPv6 仍能转换为 4 字节 IPv4。本文用三组输入拆开返回边界,并给出地址族判断、IPNet.Contains 和监听配置中的实用写法。163 收藏 -
区分单次多包测试与多次分片覆盖数据,使用测试二进制采集中间资料、covdata merge 合并,并生成包级、函数级及 HTML 报告,说明范围与计数边界。163 收藏