Go教程技术文章
-
Go 的 trace.Stop 太晚会让无关运行阶段混入追踪,也可能因 defer 顺序错误在文件关闭后仍尝试写入。本文用采集窗口和资源生命周期解释正确写法。440 收藏 -
Go 的 url.URL.JoinPath 会通过 path.Join 清理路径中的连续斜杠、./ 和 ../。本文用 API 路径、PathEscape 和方案对比说明为什么双斜杠会改变,以及什么时候不该使用 JoinPath。440 收藏 -
编辑器保存配置时常用临时文件写入再重命名,Go 文件监听器看到的可能是多次事件而不是一次保存。本文用事件合并、稳定快照读取和重试窗口处理原子替换,避免读到半个文件,也避免漏掉真正的更新。439 收藏 -
Golang · Go教程 | 3星期前 | JSON · go · 后端开发 · 接口设计 · Go encoding/json JSON接口 DisallowUnknownFields Decoder
Go 的 JSON 接口要不要拒绝未知字段,关键不在于开关本身,而在于客户端兼容边界。本文用 Decoder.DisallowUnknownFields 拆解严格校验、错误定位、灰度发布和回滚策略。439 收藏 -
io.NewSectionReader 适合从一个可随机读取的数据源中切出固定区间。本文用 bytes.Reader 演示 Offset、Read、ReadAt、Seek 与越界 EOF 的实际边界,避免把局部读取误写成全量读取。439 收藏 -
用 Go debug/buildinfo.ReadFile 读取已构建二进制中的主模块、依赖版本与版本控制信息,配合发布校验避免拿错构建产物。438 收藏 -
Go 可以用文件名后缀和 //go:build 条件编译为 Windows、Linux 提供不同实现。本文用一个跨平台文件权限接口说明目录组织、构建标签、文件选择检查和常见坑。438 收藏 -
Go 数据库请求超时后仍占连接,通常不是把 timeout 调大就能解决。应从 HTTP 请求 Context 派生查询 Context,调用 QueryContext,关闭 Rows,并结合 DBStats 与数据库日志确认取消信号真的到达驱动和数据库。437 收藏 -
Go 正则解析日志时,不要把 FindStringSubmatch 的数字下标散落在结构体初始化里。使用命名捕获组配合 SubexpIndex 建立字段映射,匹配失败返回错误,可选字段缺失保留零值,正则调整后更容易维护。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 定时任务最容易被忽略的问题不是如何触发,而是上一次任务变慢后如何避免下一轮重入。本文比较 Ticker、单次触发和带状态的调度写法,并给出可验证的选型边界。434 收藏 -
Go 正则表达式可以用 (?P...) 声明命名捕获组,再通过 FindStringSubmatch 和 SubexpIndex 按字段名读取结果。本文说明数字分组的错位风险、命名分组写法,以及 nil、空分组和名称不存在时的处理方式。 434 收藏