Go教程技术文章
-
线上 Go 接口偶发超时,通常不是把超时时间调大就能解决。本文用一个订单查询场景演示如何沿 context 从 Handler 传到下游调用,结合日志和取消信号定位未结束的请求,并给出回滚与告警检查方法。391 收藏 -
slices.Values 把切片按顺序暴露为 iter.Seq,range 消费它时仍然读取原切片;理解 yield 返回值、提前停止和底层数据共享,才能避免把迭代器误当成快照。本文用一个可运行示例验证修改可见性与终止边界。468 收藏 -
Go 的 time.Ticker.Reset 会停止当前节拍并按新周期重新计时。本文用一个动态刷新任务说明 Reset 的调用边界、正数周期校验、慢消费者丢 tick 以及并发读写时应如何组织所有权。494 收藏 -
Golang · Go教程 | 4天前 | 并发 · pprof · 故障排查 · Go教程 · Go 1.27 · net/http/pprof goroutineleak goroutine 泄漏 runtime/pprof Go 1.27
Go 1.27 将 goroutineleak profile 正式带入 runtime/pprof 和 net/http/pprof。本文从一个被 channel 永久阻塞的最小案例出发,演示如何采样、判断可疑协程,并说明全局变量和可运行协程为什么会造成漏报边界。243 收藏 -
Go 服务排查请求体时,io.TeeReader 可以把已经读取的数据同步写入审计缓冲区,同时把原始 Reader 的数据继续交给解析器。本文用真实读取链说明它的无缓冲边界、写入错误传播和敏感数据限制。282 收藏 -
Go 1.24 起可通过 net/http.Server.Protocols 明确设定 HTTP/1、HTTP/2 与明文 HTTP/2 的接受范围。本文给出 TLS 服务的最小配置、默认行为边界和回归检查方法。117 收藏 -
Golang · Go教程 | 4天前 | 部署 · embed · 模板 · Go教程 · 文件系统 · Go 静态资源 go:embed embed.FS fs.ValidPath template.ParseFS
把 HTML 模板和静态资源随 Go 二进制发布时,embed.FS 能提供只读文件树,但路径仍需遵守 fs.ValidPath 规则。本文从 go:embed、template.ParseFS 到运行时读取,说明目录布局、错误分支和部署验收。493 收藏 -
Go 的 hash/maphash 用 Seed 把哈希随机性与具体计算分开。本文通过可运行示例说明 MakeSeed、Seed 复用、Hash.SetSeed 与不可序列化边界,帮助你在内存索引中稳定使用它。265 收藏 -
Go 1.27 为 go fix 增加 atomictypes、embedlit、slicesbackward、unsafefuncs 四个 modernizer。本文用一套可回滚的检查流程说明如何先看改动,再决定是否接受自动改写。159 收藏 -
slices.Replace 会在原切片的底层数组上替换 s[i:j],但替换项数量变化时结果长度、容量和尾部清零规则都会变化。本文用一个可运行的小实验拆开它的索引边界、共享数组和收缩后的内存安全行为。146 收藏 -
用 Go 检查外部命令启动时会继承哪些环境变量,演示 Cmd.Environ、Cmd.Env 与 LookPath 如何配合,让本地和生产环境的启动条件更容易复现。250 收藏 -
Go 一次性值加载适合只初始化一次且可并发调用的值计算,但初始化函数一旦 panic,后续调用仍会重复 panic;需要重试时,应把错误返回和重试状态放在明确的控制器中。274 收藏 -
用一个小型 Go 页面服务演示 embed.FS、template.ParseFS 与 HTTP 输出如何串起来,并说明模板解析缓存、错误处理和验收方式。303 收藏 -
go/ast.Preorder 从 Go 1.23 开始返回 iter.Seq[ast.Node],适合用 range 按深度优先顺序读取语法树。本文用一个真实的 AST 分析小工具说明如何解析源码、按节点类型筛选、在找到目标后自然停止,并比较 Inspect 的控制方式。239 收藏 -
自签名 CA 或内网证书接入 Go 客户端时,握手失败往往不是服务端证书坏了,而是根证书没有进入本次 Verify 使用的证书池。本文从系统根证书池、NewCertPool、AddCert 到 Verify 串起一条可运行的证书链校验路径。433 收藏