Go语言技术文章
-
用 Go 包装 io.Reader,在不把整文件读入内存的前提下统计上传过程中已经读取的字节数。本文区分 Reader 进度、网络发送和服务端落盘边界,给出并发读取进度、失败重试与未知总大小的处理方式。127 收藏 -
Go replace 只改变模块源码的解析位置,不会绕过 internal 的导入边界。本文用 go.mod、import path 和 go list 说明本地替换、模块改名及公共包迁移的处理方法。127 收藏 -
Go filepath.WalkDir 默认不会跟随符号链接。本文用一个目录扫描器说明如何识别链接、保留链接记录,并区分 os.Stat 与 EvalSymlinks 的显式跟随行为。127 收藏 -
介绍 Go testing.T Cleanup 的登记方式、后进先出顺序、父子测试作用域和并行测试中的资源清理边界。127 收藏 -
Go 处理超大 JSON 数组时,不要先 Unmarshal 成完整切片。本文用 json.Decoder.Token、More 和 Decode 按元素流式消费,并说明数字精度、嵌套结构与错误边界。127 收藏 -
Go 创建文件时,传入的 perm 会先受进程 umask 过滤;os.Chmod 修改已有文件时则直接设置权限位。本文用公式、示例和安全流程说明两者边界。127 收藏 -
Go 1.26 的 errors.AsType 用泛型类型参数从包装错误和错误树中提取具体类型,本文说明指针和值、遍历顺序、自定义 As 方法及生产排查边界。127 收藏 -
从切片别名、append 扩容和底层数组保留三个角度,说明 Go slices.Clone 的适用边界,并用可运行示例验证复制后的修改、nil 语义与内存释放判断。126 收藏 -
Go 的 QueryRow 适合读取预期只有一行的结果,但它不会替你限制 SQL 返回多少行。本文用 WHERE、LIMIT 1、Scan、sql.ErrNoRows 和 QueryRowContext 说明单行查询的范围与错误边界。126 收藏 -
用 Go filepath.WalkDir 遍历目录时,SkipDir 只跳过当前目录,SkipAll 才能停止剩余遍历。本文通过查找文件示例说明错误处理、提前停止和未找到结果的区别。126 收藏 -
Go io.TeeReader 不会复制出两个独立 Reader,而是在下游读取时同步把已读字节写入 Writer。本文用缓存、文件和限流组合说明数据方向、错误传播及审计场景的边界。126 收藏 -
Go HTTP/2 连接在读空闲后会发送 PING,未在 PingTimeout 内收到响应便关闭连接。本文比较 CountError、httptrace、协议日志与代理指标,给出定位 conn_close_lost_ping 和配置超时的实用方法。126 收藏 -
Go types.Identical 按语言规范比较完整类型身份,结构体标签也必须一致;IdenticalIgnoreTags 只在同一套比较中忽略 struct tag。本文用最小示例说明字段、嵌套结构、命名类型和转换判断仍然不能被忽略。126 收藏 -
Golang · Go教程 | 1个月前 | HTTP · go · 连接池 · 性能排查 · net/http · http.server 连接泄漏 Go ConnState StateIdle HTTP长连接
用 http.Server.ConnState 观察 Go HTTP 连接从 StateNew 到 StateClosed 的状态变化,区分慢请求、Keep-Alive 和未收尾连接,并给出计数、超时与复核方法。125 收藏 -
用一个配置加载器看懂 Go 一次性初始化的惰性加载、错误复用和并发安全边界,给出可验证的最小实现与避坑清单。125 收藏