Go语言技术文章
-
Go 中 bytes.Buffer 适合逐步写入并把内容交给下游读取,bytes.Reader 适合只读字节切片、定位游标和重复读取。本文用一个小实验拆开两者的状态变化与选择边界。279 收藏 -
Go 1.27 简化了函数文字符号名,并可能合并内联后的同一函数文字。升级后不要再用符号名或函数代码指针判断闭包身份,改用稳定的行为断言和显式测试标识。279 收藏 -
Go 中使用 net/url.ResolveReference 拼接 API 地址时,基础 URL 的尾部斜杠会决定相对路径进入目录还是替换最后一段。本文用代码和边界表说明相对路径、根路径、查询引用与完整 URL 的区别。279 收藏 -
用 Go encoding/xml 的结构体标签把重复 XML 子节点映射到切片,并处理嵌套路径、缺失节点与重复解码残留。279 收藏 -
Go sync.Pool适合复用可丢弃的临时对象,不适合保存配置、连接、租户或权限等长期状态。本文从可丢弃性、Reset清理、所有权和并发边界四个方面给出判断与实现方法。279 收藏 -
用 Go testing/fstest 和 fstest.MapFS 区分符号链接自身、链接目标与 Open 跟随读取,掌握 TestFS、Lstat、ReadLink 的测试边界。279 收藏 -
围绕 Go url.Parse 拒绝控制字符的报错,说明首尾空白清洗、内部控制字符拒绝、协议限制,以及 url.Values 和 PathEscape 的组件化编码边界。279 收藏 -
并发处理一批任务时只返回第一个错误,往往会掩盖其他失败项。本文用 Go errors.Join 组合多个错误,比较首错、聚合错误和带任务标识的结果汇总,给出可验证的选择边界。278 收藏 -
Go 服务偶发变慢时,runtime/metrics 能把 GC 频率、暂停和堆目标放到同一组可采样指标里。本文从一次延迟抖动开始,说明如何选指标、对齐时间窗口,并排除把正常回收误判成 GC 压力。278 收藏 -
json.Decoder 默认会忽略结构体中不存在的 JSON 字段。本文用兼容升级、管理接口和边界校验三个场景说明 DisallowUnknownFields 什么时候适合开启,以及如何识别 unknown field 错误。278 收藏 -
runtime/cgo.Handle 用整数句柄把 Go 值交给 C,再由 Go 通过 Value 取回。本文用一次回调拆开句柄表、Delete 时机、失效句柄和 Go 指针规则,帮助你判断什么时候该用 Handle。278 收藏 -
用 testing/fstest 的 MapFS 在内存中准备文件内容,测试 Go 文件读取、目录边界和缺失文件分支;再用 TestFS 检查自定义 fs.FS 的基本行为。278 收藏 -
Go 的 encoding/xml.Marshal 会按 XMLName、xml.Name、字段标签和类型名决定元素名称。本文用一个订单报文示例说明如何固定根节点、表达命名空间、把字段输出成属性,并用嵌套路径组织子元素。278 收藏 -
Go 多账号 HTTP 调用要把每个登录身份绑定到独立的 cookiejar.Jar 和 http.Client。本文说明如何复用同一会话、共享 Transport、重置 CookieJar,并用安全的 Cookie 名称检查排查登录态串号。278 收藏 -
Go compress/flate 的 Flush 只推出压缩器待处理数据,不提供网络消息边界。本文用长度帧、io.ReadFull、双层缓冲和 Close 说明接收端拿不全数据的排查与处理方法。278 收藏