Go教程技术文章
-
Go 服务可以让请求边界把 trace_id 写入 context,再由 slog 自定义 Handler 在日志出口统一补充字段。本文给出可直接复用的包装器、中间件和 OpenTelemetry 提取方式,并说明伪造、覆盖与隐私边界。256 收藏 -
Go 1.23 起可用 unique.Make 规范化可比较值。本文用重复标签对象示例说明如何保存 unique.Handle[string]、在热路径比较句柄、在输出边界取回 Value,并解释何时不该使用。255 收藏 -
Golang · Go教程 | 1天前 | channel · select · Context · 并发编程 · Go教程 · context取消 time.NewTimer goroutine退出 Go select channel超时
本文给出一个可复用的 Go select 写法,同时监听任务结果、局部超时和上游取消信号,并解释缓冲结果通道、派生 Context、CancelFunc、ctx.Err、计时器释放及多个 case 同时就绪时的处理边界。250 收藏 -
本文用一个多生产者、多消费者示例说明如何把固定容量的 Go Channel 作为排队上限:缓冲区满时生产者自然阻塞,并通过方向约束、context 取消、WaitGroup 和单点关闭保证生命周期安全。248 收藏 -
本文用 go mod tidy -diff、go mod why 和 go mod graph 建立可回滚的依赖整理流程,解释新增、删除、版本变化和 indirect 注释变动的真实含义。247 收藏 -
Go 可以用 io.Pipe 将 ZIP 生成器直接接到 HTTP 请求体,实现边生成边上传而不落整包临时文件。本文给出可取消、可传递错误的完整写法,并说明无缓冲背压、关闭顺序、重试和 Content-Length 限制。245 收藏 -
用 Go 标准库 ServeMux 表达方法与路径约束,把日志、超时等横切逻辑放进中间件,并让业务错误沿着只写一次的响应出口返回。242 收藏 -
Go 1.23 起,maps.Collect 可以把 iter.Seq2[K,V] 键值序列收集为新的 map。本文从 slices.All 的最小写法讲到自定义 Seq2、重复键覆盖规则,以及 maps.Collect 与 maps.Insert 的选择边界。236 收藏 -
以逗号分隔标签的规范化函数为例,用 Go Fuzz 检查编解码往返、幂等、UTF-8、排序与去重性质,并给出种子语料、运行预算和失败输入回归方法。226 收藏 -
Go 更新配置文件时不要直接截断正式文件。把临时文件放在同一目录,完整写入并同步关闭后,再用 os.Rename 一次性切换,才能降低半文件和并发读取风险。225 收藏 -
在 Go 1.25+ 中,可先用 os.OpenRoot 建立可信目录边界,再用 Root.MkdirAll 创建父目录,并通过 Root.OpenFile 的 O_CREATE|O_EXCL 策略安全创建相对路径文件。本文同时说明覆盖、并发和部分写入边界。219 收藏 -
Golang · Go教程 | 4小时前 | JSON · 时间处理 · Go教程 · database/sql · 后端开发 · RFC3339 Go时间序列化 time.Duration JSON 数据库时间戳 sql.NullTime
用一个小型任务接口统一 Go 业务时间、Duration 与数据库可空时间戳,给出自定义 JSON 类型、仓储映射和往返测试。212 收藏 -
用 Go 的 html/template 生成 HTML 邮件,演示正文、属性和 URL 上下文的自动转义,并说明 template.HTML 只适用于可信片段。207 收藏 -
本文演示 Go base32.NewDecoder 如何配合 io.CopyBuffer 流式解码大文件,并补充编码一致性、大小限制、错误处理和临时文件提交。206 收藏 -
Go 批量任务如果靠定时轮询检查状态,既浪费唤醒次数又难以处理关闭流程。本文用 sync.Cond 把状态检查、等待和批量唤醒组织起来,并说明 Signal、Broadcast 与退出条件的选择。204 收藏