Go语言技术文章
-
Go html/template 解析多个文件或 define 命名模板后,可以用 Templates 遍历关联模板并读取 Name,再用 Lookup 检查某个名称是否存在。本文给出最小示例,并说明 ParseFiles 根名称、命名模板和 ExecuteTemplate 参数不一致时的排查顺序。122 收藏 -
用 Go netip.ParseAddr 解析带接口作用域的 IPv6 地址,读取 Addr.Zone,并掌握 WithZone、As16 与 Prefix.Contains 的边界。363 收藏 -
讲清 Go http.Request.WriteProxy 与 Request.Write 的格式差异,演示如何生成带绝对 URI 的代理请求,并说明 URL、Host、writer 和代理连接之间的职责边界。184 收藏 -
Go crypto/ecdh PrivateKey.Bytes 返回的是原始私钥编码副本,不是 PEM 或 PKCS#8 容器。本文用同曲线回读示例说明导出、校验、存储和敏感字节生命周期的边界。151 收藏 -
Golang · Go教程 | 2星期前 | 标准库 · 性能优化 · url · Go教程 · Go net/url []byte URL.String URL.AppendBinary URL.MarshalBinary
Go net/url 的 URL.AppendBinary 可以把 URL 文本追加到已有 []byte,并把返回切片交给后续协议或日志写入。本文说明正确接住返回值、处理错误、复制长期数据,以及它和 URL.String、MarshalBinary 的选择边界。388 收藏 -
使用 Go 的 exec.Cmd.StdinPipe 向子进程提供标准输入时,关键不是只拿到一个 io.WriteCloser,而是明确 Start、Write、Close、Wait 的生命周期。本文用一个可迁移的写法说明如何让 EOF 正确到达,并区分输入写入错误、启动错误和命令退出错误。157 收藏 -
Go reflect.Value.SetIterKey 用于把 MapRange 当前条目的键写入可设置的 Value。本文说明 MapIter.Next、键类型可赋值、CanSet 与迭代器状态边界,并对比 Set(iter.Key()) 的使用方式。389 收藏 -
讲清 Go crypto/mldsa.PublicKey.Bytes 如何导出可分发的 ML-DSA 公钥编码,怎样携带参数集并用 NewPublicKey 恢复对象,以及如何提前判断长度和参数错配。152 收藏 -
Go encoding/json/v2 默认把 nil map 编码为空 JSON 对象。本文说明怎样用 FormatNilMapAsNull 恢复 null 语义,并给出字段级覆盖与迁移回归清单。369 收藏 -
Go 的 os.File.Chdir 可以把已经打开的目录句柄设为当前工作目录,适合需要复用目录句柄的场景。本文从一次相对路径读取失败的排查开始,说明打开、切换、恢复、关闭和并发边界。482 收藏 -
strconv.Unquote 解析配置值失败,通常不是反斜杠本身不能出现,而是输入没有遵守 Go 字符串字面量的引号和转义规则。本文用路径配置拆开缺少引号、未知转义和重复转义三种情况,并给出统一处理与 Quote 配对的写法。203 收藏 -
以Linux交叉构建为范围,区分目标架构与链接方式,介绍关闭cgo和保留目标C工具链两条路线,并说明动态加载器、共享库及运行镜像迁移条件。397 收藏 -
Go 表驱动测试调用 t.Parallel 后,子测试可能在外层循环继续修改变量时才真正执行。本文从调度语义、Go 1.22 循环变量规则和指针切片共享边界说明原因,并给出兼容旧模块的修复写法。459 收藏 -
Go race 没有报告某次数据竞争,并不等于代码绝对安全。本文从运行路径、并发时序、race 构建和 !race 文件四个方面拆解漏报原因,并给出一份可复查的测试覆盖清单。488 收藏 -
区分f.Add种子、testdata文件语料与fuzz探索缓存,说明目标目录、包路径、单样本过滤及输入类型匹配,并用边界错误示例解释如何建立稳定回归。487 收藏