Go语言技术文章
-
go/token 把源文件位置压缩成 Pos,真正输出错误时还要经过 FileSet.PositionFor。本文用多文件和 //line 场景说明 adjusted、文件偏移与诊断文本如何对应,并给出可复现的核对方式。367 收藏 -
Go 测试里临时目录既要自动清理,又要在失败时保留现场,关键是把清理责任绑定到正确的测试层级。本文用 t.Cleanup、t.TempDir 和子测试演示一次注册、按层执行与失败验收。141 收藏 -
Go 泛型代码需要把类型交给反射注册表时,reflect.TypeFor 可以直接取得类型描述;再配合 AssignableTo 校验注册边界,避免用空值和类型断言绕一圈。291 收藏 -
用 Go 1.23 新增的 os.CopyFS 把 embed.FS 复制到本地目录,说明目标目录创建、已有文件冲突、fs.ErrExist 判断和权限边界。299 收藏 -
用 Go io.Copy 处理上传、代理和文件转存时,先限制输入边界,再利用 ReaderFrom 的快路径,最后用可复现基准确认吞吐与内存变化。409 收藏 -
go/ast.Preorder 返回一个按深度优先顺序遍历语法树的迭代器。本文从源码扫描器的高压场景出发,拆解节点顺序、break 提前停止和解析错误的边界,并给出可复查的实现方式。148 收藏 -
用 testing.T.Context 把测试超时信号传给后台 goroutine,并配合 Cleanup 等待资源退出,避免测试结束后仍有后台任务运行。420 收藏 -
Go 的 regexp.Expand 和 ExpandString 可以把正则捕获结果写入模板。本文从命名捕获组、模板边界和字节切片复用出发,给出可验收的替换写法,并说明空捕获组与并发使用时的注意点。402 收藏 -
time.ParseDuration 能解析带单位的时长,但 Duration 本质是 int64 纳秒数。本文从配置输入、解析错误和范围校验三个环节说明如何避免极大值溢出,并给出安全回退写法。194 收藏 -
Go 里只拆一次字符串时优先考虑 strings.Cut;需要保留全部片段或处理空字段时使用 strings.Split。本文用请求头和配置值的例子说明两者的返回值、边界与选择规则。492 收藏 -
text/template 默认会把缺失 map 键静默变成空值。本文用 missingkey=error 配合模板执行,定位字段拼写错误发生的阶段,并给出可运行的测试验收方法。286 收藏 -
用 Go net/url 的 URL.JoinPath 拼接接口路径,厘清多斜杠、./、../ 与 PathEscape 的边界,并通过可运行示例验收最终请求地址。160 收藏 -
Golang · Go问答 | 1星期前 | HTTP · go · 性能排查 · 连接管理 · Go net/http 连接泄漏 ConnState StateNew StateActive StateClosed
Go 的 net/http.Server.ConnState 能把连接状态变化暴露出来。本文用 StateNew、StateActive、StateIdle 与 StateClosed 计数,区分正常长连接、慢请求和连接泄漏,并给出可运行的核对方法。211 收藏 -
Golang · Go教程 | 1星期前 | 依赖管理 · 调试 · Go教程 · 工程实践 · 构建信息 · Go 依赖版本 debug.BuildInfo debug/buildinfo 发布验收
线上只拿到一个 Go 二进制时,debug.BuildInfo 可以帮助你还原构建工具链、主模块、依赖模块与 VCS 设置。本文用 ReadFile 和 ReadBuildInfo 组成一套发布验收流程,并说明模块模式、裁剪信息与脏工作区的边界。200 收藏 -
用 Go flag.FlagSet 处理子命令参数时,未知参数、缺少参数值和 -h 不能混在一起判断。本文用 ContinueOnError、Usage 和 Parse 的返回结果拆开这三类分支。275 收藏