Go语言技术文章
-
Go 1.27 调整了 go tool trace -http 只写端口时的默认监听范围。本文说明 :6060、localhost、127.0.0.1 和 0.0.0.0 的区别,并给出远程查看时更稳妥的 SSH 端口转发写法。279 收藏 -
Go go/format.Node 可以把 ast.File、声明、语句或表达式节点写成 gofmt 风格的 Go 源码。本文从 FileSet 和 parser 开始,说明完整文件与局部节点的差异、注释处理以及 AST 或 Writer 出错时的处理方式。279 收藏 -
Go 的 unicode/utf8.RuneStart 用来判断一个字节是否可能是 UTF-8 符文的首字节。本文从 ASCII、中文多字节编码和 10xxxxxx 后续字节切入,说明它的判断边界,以及为什么还要配合 DecodeRune 或 Valid。279 收藏 -
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 收藏 -
sync.Pool 取出的对象带着上一次请求的字段时,问题通常不是 Pool 失效,而是复用对象没有在交接边界清理。本文从临时对象契约、Reset 设计、Get/Put 时机和不适合放入 Pool 的状态四个方面,整理一套可落地的排查方式。278 收藏 -
用afero MemMapFs为文件读取测试准备独立目录,示例讲清父目录创建、文件写入和实例注入,并区分正常内容、缺文件与真实磁盘测试的适用场景。278 收藏 -
区分 time.Time 零值与 Unix epoch 的语义,说明 IsZero、Unix、可选时间字段和数据库时间字段应该分别怎样判断。278 收藏 -
从Wait提前返回与计数错误切入,说明WaitGroup零计数时Add必须先于Wait的规则,提供启动前登记、独立结果槽位示例,并检查Done配对、值复制和批次复用。278 收藏 -
修改环境变量后 Go 构建结果没有变化,不一定是缓存失效。本文区分运行时变量、构建参数和 cgo 外部依赖,给出缓存命中排查与安全重建方法。278 收藏