Go语言技术文章
-
bufio.Reader.WriteTo 返回的是已复制字节数 n 和复制错误 err。目标 Writer 可能在部分写入后失败,调用方应同时保存 n 与 err,并区分完整复制、目标写入失败和源读取失败。495 收藏 -
Go base64.Encoding.Strict 会额外检查末尾量子中的填充位是否为零。本文用一个最小示例解释非零填充位、CorruptInputError、换行忽略和标准编码修复之间的关系,帮助定位严格解码失败。480 收藏 -
Go binary.Uvarint 返回 n=0 不是解出了数字 0,而是当前缓冲区还不够完整;n<0 则表示溢出。本文从分片输入场景出发,给出三种返回值的判断、游标推进、尾部保留和 ReadUvarint 选择方法。346 收藏 -
Golang · Go问答 | 9分钟前 | 标准库 · 接口设计 · Go问答 · encoding/json · Go encoding/json json.RawMessage JSON字段 部分更新
Go 结构体使用普通指针时,字段缺失和显式 null 容易落到同一个 nil 状态。本文用 json.RawMessage 保留原始字段语义,区分缺失、null 和具体 JSON 值,并给出部分更新接口的处理方式。445 收藏 -
Go 1.26 的 testing.T.ArtifactDir 为测试或子测试提供稳定的产物目录;未开启 -artifacts 时目录用于临时排查并会清理,开启后才会落到输出目录中保留。本文给出最小写法、子测试边界和 CI 保存策略。226 收藏 -
Go pem.Decode 找不到下一个 PEM 块时会返回 nil,并把未找到块的整段输入原样放到 rest。本文说明这种设计如何作为终止信号,并给出连续读取多个 PEM 块时避免重复处理和死循环的写法。288 收藏 -
Go 反射通过 FieldByName 读取同名嵌入字段时,多个路径无法唯一消歧会返回无效 Value。本文演示如何检查 IsValid、改用 FieldByIndex,并处理 nil 嵌入指针。232 收藏 -
Go encoding/gob 按字段名匹配结构体数据。本文说明旧 gob 数据解码到新增导出字段的结构体时为何通常仍然兼容、哪些类型变化会失败,以及如何设计结构体迁移测试。261 收藏 -
Go sync.Map.LoadOrStore 返回的 actual 是最终值,loaded 则说明这个值来自已有条目还是本次存入。本文结合空键、已存在键和并发竞争,说明如何用 loaded 判断初始化责任,避免把候选值误当成缓存结果。308 收藏 -
Go 的 http.Request.PathValue 为空,通常不是参数丢了,而是请求没有经过包含命名通配符的 ServeMux 匹配,或测试中的通配符名称不一致。本文从匹配链路、最小实现、httptest 和 SetPathValue 四个场景说明排查与修复方式。501 收藏 -
Go testing/quick 的 Config 可以同时控制随机输入和检查次数:用 math/rand.New(rand.NewSource(seed)) 固定 Rand,用 MaxCount 限制迭代上限。本文说明两者的优先级、生命周期和失败定位边界。256 收藏 -
Go 的 FileMode 同时包含文件类型、普通权限和特殊权限。本文说明如何只替换权限位,正确构造 File.Chmod 入参,并处理 Unix 与 Windows 的语义差异。338 收藏 -
Go URL.ResolveReference 的基础路径末尾斜杠会改变相对路径合并位置。通过目录前缀对照和四条表驱动用例,区分目录基址、当前页面、根路径与查询引用,避免错误拼接。157 收藏 -
Go mime.ExtensionsByType 做 MIME 到扩展名的反向查询时,结果可能包含多个带点后缀。本文说明如何把它当作候选集合,并用业务格式、用户偏好或稳定排序选择默认后缀,同时明确它不负责检测文件内容。400 收藏 -
Golang · Go问答 | 6小时前 | go · https · net/http · GetCertificate TLS配置 Go ServeTLS TLSConfig.Certificates GetConfigForClient 内存证书
Go http.Server.ServeTLS 的证书文件参数可以为空,但前提是 TLSConfig 已通过 Certificates、GetCertificate 或 GetConfigForClient 提供证书。本文用最小代码和参数表说明内存证书配置、动态选证书与启动排查边界。168 收藏