Go语言技术文章
-
Go ticker 本身不会无限累积任务,长时间运行后出现漂移通常与任务耗时、接收延迟或完成后重新等待有关。本文用固定截止时间解释跳过与补偿的选择。247 收藏 -
Go 里 crypto/sha256.New 和 sha256.Sum256 都能计算 SHA-256,但适用场景不同:一次性 []byte 直接用 Sum256,文件、网络流和分块数据用 New。本文用代码、返回类型和边界清单说明如何选择。247 收藏 -
用 Go io/fs 的 fs.FS 与 fs.WalkDir 统一遍历磁盘目录、嵌入资源和测试文件系统,掌握 slash 路径、DirEntry、错误处理、符号链接与 fs.Sub 的边界。247 收藏 -
解释 Go parser.AllErrors 只会取消默认的同一行错误抑制和十条左右停止限制,并说明解析恢复为何仍会跳过或遮蔽部分语法问题。247 收藏 -
本文用 go mod tidy -diff、go mod why 和 go mod graph 建立可回滚的依赖整理流程,解释新增、删除、版本变化和 indirect 注释变动的真实含义。247 收藏 -
strings.Builder 的零值可直接使用,但写入后再按值复制会触发 panic。文章用传值参数、切片 append 和正确传指针的对比,说明 Builder 的安全边界与重构方法。246 收藏 -
Go 并发测试里大量 time.Sleep 往往又慢又不稳定。Go 1.25 已将 testing/synctest 纳入标准库,可在受控测试环境中使用虚拟时间和 synctest.Wait 检查后台任务的稳定状态。本文用延迟写缓存的例子说明最小迁移方式、适用边界和回归检查。246 收藏 -
go vet 报 copylocks 通常说明包含 Mutex 等同步对象的结构体被按值传递或复制。本文解释值接收者、参数、赋值和 range 的风险,并给出指针接收者与无锁快照的修复方式。246 收藏 -
自定义错误想让 errors.Is 匹配,关键是实现 Is(error) bool;Error 只负责展示,Unwrap 只负责暴露包装链。本文用配额错误小项目演示哨兵错误、%w 包装、浅比较和误匹配测试。246 收藏 -
Go Context 的 Deadline 返回绝对时间和 ok 标志。本文用代码说明如何读取截止时间、换算剩余预算,并区分超时、取消与父子 Context 的期限边界。246 收藏 -
Golang · Go教程 | 2星期前 | Go教程 · net/http · CheckRedirect Go http.Client重定向 ErrUseLastResponse HTTP跳转策略
通过 http.Client.CheckRedirect 按目标主机、请求方法和跳转次数制定重定向策略,区分拒绝跳转与保留 3xx 响应,并处理 301/302/303、307/308 的请求体和响应关闭边界。246 收藏 -
Go copy返回值偏小时,先看目标切片的len而不是cap。本文用代码和表格说明copy的可见范围、容量扩展方式、重叠复制与空切片边界。246 收藏 -
Go 的 URL.Redacted 会保留用户名并把 Userinfo 密码替换为 xxxxx,但不会处理查询参数中的 token。本文从日志泄露路径出发,给出标准方法、强化脱敏封装、结构化审计字段和回归测试。246 收藏 -
本文用一个原创 Go 示例说明 importer.ForCompiler 如何选择 gc、gccgo 或 source,如何配合 token.FileSet 与 go/types 读取类型信息,以及 Lookup、模块路径和 cgo 边界。246 收藏 -
Go 测试容易因临时文件残留、环境变量串值而偶发失败。本文整理 t.TempDir、t.Setenv 和 t.Cleanup 的使用顺序、并行限制和检查清单,让测试资源能自动收口。245 收藏