Go教程技术文章
-
本文用 Go net/http ServeMux 组织方法、路径和命名通配符,说明路由优先级、PathValue 参数读取、冲突边界与旧版本兼容写法。205 收藏 -
Go test -cover 默认只统计当前测试目标包。本文用 coverprofile 和 -coverpkg 对照说明包路径选择、依赖包覆盖率与 CI 统计口径的关系。475 收藏 -
本文介绍 Go atomic.Int64 的声明、初始化、Add 递增、Load 读取和 Store 重置,说明并发计数中的复制限制与复合判断边界。381 收藏 -
Go channel 的关闭责任应跟随发送方和生命周期所有者划分。本文用单生产者、多生产者、取消信号三种场景说明 close 的位置、协调方式和排查清单,避免向已关闭通道发送数据。217 收藏 -
用一个临时日志缓冲区示例,说明 sync.Pool 如何在 Get 后初始化、Put 前清理,避免高并发复用对象时泄露上一次请求的脏状态。257 收藏 -
用 Go log/slog 在请求边界派生带 request_id 的 logger,结合 With、WithGroup 和 LogAttrs 组织结构化字段,并说明 context、脱敏与并发复用边界。202 收藏 -
围绕 Go html/template 的上下文转义实践,说明 HTML 正文、属性、URI 和 JavaScript 数据位置的差异,并梳理 template.HTML 等安全类型的使用边界。361 收藏 -
用 Go strconv.ParseInt 按进制和位宽检查字符串整数,区分 ErrSyntax 与 ErrRange,再安全转换为 int32、int64 等业务类型。259 收藏 -
说明 Go interface 携带 nil 指针时为什么仍不等于 nil,并用错误返回边界、类型断言和三种状态测试避免 typed nil 误判。287 收藏 -
解释 Go maps.Equal 比较配置 Map 时 nil map 与空 map 为什么相等,说明 m == nil、len、可写边界、NaN 特殊值和需要保留 nil 语义时的测试写法。183 收藏 -
用 Go sort.Search 在升序切片中查找 lower bound 插入点,处理重复值、首尾边界和切片扩容移动。245 收藏 -
用单槽触发缓冲和单 worker 设计 Go time.Ticker 周期任务,避免慢任务重叠执行,同时保留一次下一轮触发,并说明取消、告警与可靠队列边界。110 收藏 -
讲清 Go time.Timer 复用时 Stop 返回值、旧语义排空 C 通道和 Go 1.23 新计时器语义的差异,并给出单一所有者的安全模板。469 收藏 -
Go 的 text/template 与 html/template API 很像,但输出边界不同:日志和邮件纯文本使用 text/template,浏览器 HTML 使用 html/template。本文用一个最小渲染项目对比普通文本、HTML 文本节点和 href 属性中的转义结果,并说明 template.HTML 的信任边界。275 收藏 -
围绕 Go errors.As 讲清自定义错误类型、错误包装链、Unwrap 和目标指针的配合方式,帮助业务层按稳定字段分层处理错误而不是比较易变的文本。471 收藏