Go语言技术文章
-
Go HTTP/2 连接在读空闲后会发送 PING,未在 PingTimeout 内收到响应便关闭连接。本文比较 CountError、httptrace、协议日志与代理指标,给出定位 conn_close_lost_ping 和配置超时的实用方法。126 收藏 -
Go types.Identical 按语言规范比较完整类型身份,结构体标签也必须一致;IdenticalIgnoreTags 只在同一套比较中忽略 struct tag。本文用最小示例说明字段、嵌套结构、命名类型和转换判断仍然不能被忽略。126 收藏 -
安全扫描通过不等于 Go 服务已经安全。本文说明 govulncheck、go vet、竞态检测和模糊测试各自能证明什么、有哪些盲区,并给出分层 CI 门禁与复查清单。126 收藏 -
从运行时值、泛型类型参数和接口类型三个角度比较 reflect.TypeFor 与 TypeOf 空指针技巧,说明 nil interface 陷阱以及该怎样选择更直观的写法。126 收藏 -
Go 调用外部命令时,Cmd.Stdout 和 Cmd.Stderr 是两条独立输出流。本文从只看到一条日志的常见现场出发,分别介绍 bytes.Buffer、StdoutPipe、StderrPipe 和 CombinedOutput 的选择、错误处理与并发读取边界。126 收藏 -
Go 的 encoding/csv 负责解析记录和字段,不会自动识别 GBK 或 GB18030。本文从 UTF-8、GBK 解码边界出发,说明中文 CSV 出现乱码的原因与可直接复用的修正写法。126 收藏 -
围绕 Go 1.25 的 testing.T.Attr,说明测试属性的键值约束、无序日志语义、go test -json 的 attr 事件字段,以及旧版本和 CI 解析器的兼容处理。126 收藏 -
Golang · Go教程 | 2个月前 | HTTP · go · 连接池 · 性能排查 · net/http · http.server 连接泄漏 Go ConnState StateIdle HTTP长连接
用 http.Server.ConnState 观察 Go HTTP 连接从 StateNew 到 StateClosed 的状态变化,区分慢请求、Keep-Alive 和未收尾连接,并给出计数、超时与复核方法。125 收藏 -
用一个配置加载器看懂 Go 一次性初始化的惰性加载、错误复用和并发安全边界,给出可验证的最小实现与避坑清单。125 收藏 -
用 Go 的 net/http.ServeContent 搭一个可验证的文件下载接口,拆清 Range、If-Modified-Since 与 Last-Modified 的判断边界。125 收藏 -
Go 的 strings.Cut 会同时返回分隔符前后文本和 ok 标志,分隔符缺失时前半部分保留原字符串、后半部分为空。本文用配置解析和并发无关的最小示例,说明如何区分缺失、空字段与正常切分。125 收藏 -
Go 1.23 引入 runtime/debug.SetCrashOutput,可把未处理 panic 和致命运行时错误额外写入文件。本文用一个可运行的最小例子解释文件句柄复制、关闭时机、覆盖规则与并发替换边界。125 收藏 -
Go 里的无标签 break 只结束最近的 for、switch 或 select。本文用嵌套示例说明为什么 switch 中的 break 不会跳出外层循环,以及标签、函数拆分和返回值的选择。125 收藏 -
Go 多包测试中,TestMain 不是全局入口:每个包拥有独立测试二进制。本文说明 m.Run 返回码、清理逻辑和 os.Exit 的边界,避免初始化重复、defer 不执行和失败状态丢失。125 收藏 -
channel range 结束只说明 channel 已关闭且缓存值已读完,不代表发送方 goroutine 已经退出。本文用发送方关闭 channel、WaitGroup 汇总和 context 取消,说明如何确认发送方真正结束并避免协程泄漏。125 收藏