Go教程技术文章
-
Go 可以用文件名后缀和 //go:build 条件编译为 Windows、Linux 提供不同实现。本文用一个跨平台文件权限接口说明目录组织、构建标签、文件选择检查和常见坑。438 收藏 -
Golang · Go教程 | 2个月前 | WEB开发 · 标准库 · HTTP · go · 路由迁移 Go ServeMux HTTP路由冲突 method pattern host pattern
把旧版 Go HTTP 路由迁移到支持方法和主机模式的 ServeMux 时,最容易误判的是注册顺序。本文用冲突示例解释方法、路径、主机三种匹配关系,给出启动期检查、兼容写法和 httptest 回归边界,避免服务上线后才发现请求落到了错误处理器。437 收藏 -
Go 1.24 引入 os.Root 后,处理用户可控文件名不必再手写一套容易漏掉符号链接和 .. 的路径校验。本文用一个安全文件读取小实验,验证 OpenRoot、Root.Open、OpenInRoot 的边界,并说明旧版本的兼容做法。437 收藏 -
Go 数据库请求超时后仍占连接,通常不是把 timeout 调大就能解决。应从 HTTP 请求 Context 派生查询 Context,调用 QueryContext,关闭 Rows,并结合 DBStats 与数据库日志确认取消信号真的到达驱动和数据库。437 收藏 -
Go 正则解析日志时,不要把 FindStringSubmatch 的数字下标散落在结构体初始化里。使用命名捕获组配合 SubexpIndex 建立字段映射,匹配失败返回错误,可选字段缺失保留零值,正则调整后更容易维护。436 收藏 -
围绕 Go time.Ticker 的停止语义,演示如何用 context 退出周期循环、等待工作协程,并按所有权释放外部资源,同时说明 Go 1.23 垃圾回收变化的边界。436 收藏 -
Go 1.26 新增 crypto/hpke,提供符合 RFC 9180 的混合公钥加密接口。本文用一个最小消息交换示例拆开封装、解封装、上下文信息和密钥用途边界,并说明如何验证密文不可直接当作明文使用。435 收藏 -
用 Go 处理连续 JSON 流时,Decoder.Token、Decode 和 Buffered 的边界很容易被误读。本文从两个 JSON 连在一起的现场出发,验证读取位置、解释看似吞值的原因,并给出可复查的多对象解析写法。435 收藏 -
用 Go 的 sync/atomic.Value 保存同一具体类型的只读配置快照,写入方复制后整体替换,读者通过 Load 无锁读取,并避开共享 map、类型漂移和并发写入等常见坑。435 收藏 -
Go 使用 bufio.Writer 写文件时,Flush 成功并不等于关闭顺序正确。本文用最小示例拆开 Write、Flush、Close 三个阶段,定位空文件、defer 逆序和错误被覆盖等常见问题。435 收藏 -
Go url.URL 的 Opaque 用于表示 scheme:opaque 形式的非层级 URI。本文对比 mailto、urn、data 与普通 HTTP 地址,说明字段读取、直接构造和误用边界。435 收藏 -
通过长度前缀 JSON 示例说明 Go rpc.Server.ServeCodec 如何接入自定义 ServerCodec,并梳理拆帧、并发写响应与关闭连接的边界。435 收藏 -
Go 定时任务最容易被忽略的问题不是如何触发,而是上一次任务变慢后如何避免下一轮重入。本文比较 Ticker、单次触发和带状态的调度写法,并给出可验证的选型边界。434 收藏 -
Go 正则表达式可以用 (?P...) 声明命名捕获组,再通过 FindStringSubmatch 和 SubexpIndex 按字段名读取结果。本文说明数字分组的错位风险、命名分组写法,以及 nil、空分组和名称不存在时的处理方式。 434 收藏 -
Go 的 encoding/csv 支持把引号字段中的换行保留为同一条记录。本文说明正确的 CSV 写法、csv.Reader 的读取方式、字段数配置,以及如何用 ParseError、FieldPos 和 InputOffset 定位坏数据。434 收藏