Go教程技术文章
-
Go 1.23 引入的 maps.Keys 返回键迭代器,配合 slices.Sorted 可以在需要稳定顺序时一次收集并排序,本文用批处理示例说明空 map、无序遍历与高频复用边界。160 收藏 -
在 Go html/template 中输出 href、src 等 URL 属性时,应让模板根据上下文完成转义和协议过滤。本文用直接绑定、查询参数和允许列表示例说明如何避免 javascript 协议、重复转义与不当使用 template.URL。160 收藏 -
sql.RawBytes 引用的是数据库拥有的内存,Scan 后只能使用到下一次 Next、Scan 或 Close。本文说明如何在当前行立即消费,以及什么时候用 append 复制成独立字节切片,避免跨行缓存和异步处理拿到失效数据。159 收藏 -
filepath.Localize 用于把 io/fs 约定的 slash 分隔路径转换为当前操作系统路径。本文通过 Go 示例说明输入契约、错误边界,以及它和 FromSlash、ToSlash 的区别。159 收藏 -
Go time.Ticker 的 tick 不是可靠事件队列,接收方变慢时可能被调整或丢弃。本文说明如何定位高频消费过慢,并按最新状态、全部事件和退出清理选择合适方案。159 收藏 -
bufio.Scanner 默认 token 容量有限,读取超长单行时可能出现 token too long。本文说明如何在 Scan 前设置 Buffer,如何判断字节容量边界,以及什么时候改用 bufio.Reader。159 收藏 -
Go embed 的“文件不存在”分成构建期匹配失败和运行期路径缺失两类。本文用 embed.FS 说明如何判断 fs.ErrNotExist,并设计不会因可选资源缺失而无法构建的目录结构。158 收藏 -
Go slog 通过 With 创建请求专属日志器并显式传递,区分请求属性与事件属性,排查字段丢失、请求串号及 Context 自动取值误区。158 收藏 -
用 expvar.Func 和自定义 Handler 暴露只读运行指标,说明 GET 访问边界、动态计算、路由隔离、命名冲突与数据安全。158 收藏 -
Go tls.Config 通过 NextProtos 发布 ALPN 候选,协议选择发生在 TLS 握手期间。本文用最小客户端和服务端示例说明如何配置 h2 与 http/1.1、读取 NegotiatedProtocol,并定位没有交集时的常见问题。158 收藏 -
Go testing.B.Cleanup 适合绑定基准测试生命周期中的资源释放:先创建资源并注册 Cleanup,再用 ResetTimer 划定计时区间;本文用临时目录和自定义资源示例说明清理时机、LIFO 顺序,以及它与 b.TempDir 的选择边界。158 收藏 -
介绍 Go parser.ParseExpr 解析单个表达式的用法,并说明为什么需要 ParseExprFrom 配合 token.FileSet 才能稳定输出文件名、行号、列号和多条语法错误。158 收藏 -
Go 的 json.Encoder 默认会转义 JSON 字符串中的 HTML 相关字符。本文通过对比示例说明 SetEscapeHTML(false) 的使用边界,以及 API、日志和 HTML 嵌入场景如何选择。158 收藏 -
Go HTTP 服务优雅关闭的关键是先停止接收新连接,再等待活跃请求回到空闲;本文用 signal.NotifyContext、Server.Shutdown 和超时兜底组成可直接复用的关闭流程,并说明 WebSocket 等长连接的额外边界。157 收藏 -
Go 中不要直接比较 IP 字符串:先用 netip.ParseAddr 转成 Addr,再按任务选择 ==、Compare 或 Less;本文还说明 IPv4-mapped IPv6、IPv6 zone、零值、map key 与输入校验边界。157 收藏