Go教程技术文章
-
Go 1.25 的 runtime/trace.FlightRecorder 能持续保留最近一段执行轨迹,在慢请求或健康检查异常时导出现场。本文用一个 100 毫秒慢请求阈值示例,说明 MinAge、MaxBytes、WriteTo 和 go tool trace 的配合边界。336 收藏 -
Golang · Go教程 | 2个月前 | golang · JSON · 数据库 · database/sql · JSON Go database/sql 零值 NullTime 数据库NULL
数据库里的 NULL 不是 Go time.Time 的零值。本文用 database/sql.NullTime 贯通扫描、业务判断和 JSON 输出,给出一套能区分缺失时间与真实零时间的最小实现,并说明写回数据库时的边界。336 收藏 -
本地多模块联调时,版本不生效不一定是 use 写错。先用 go env GOWORK 和 go env GOMOD 确认实际工作区,再区分 go.work 的本地模块、go.mod 要求与工作区构建列表,最后用 GOWORK=off 验证 CI 和发布边界。336 收藏 -
用 priorityRank 把业务优先级映射成整数,再让 slices.SortFunc 按优先级、时间和 ID 排序结构体切片;同时说明未知优先级、严格弱序、稳定排序和 IsSortedFunc 检查。336 收藏 -
Go 覆盖率不只看总百分比:用 go test 生成 cover.out,再用 go tool cover -func 按函数查看文件、语句数和覆盖率,快速定位该补哪组测试。336 收藏 -
用 filepath.Rel 计算相对目录深度,在 filepath.WalkDir 回调中通过 filepath.SkipDir 截断超出层级的目录子树,并说明错误处理、符号链接和跨平台路径边界。336 收藏 -
从 HTTP Handler 取出请求上下文,沿数据库查询和下游 HTTP 调用继续传递截止时间,说明 QueryContext、NewRequestWithContext、错误判断与资源清理的边界。336 收藏 -
Go bufio.Reader 在成功 ReadRune 后可用 UnreadRune 回退一个码点。本文以数字串试探解析为例,说明同一 Reader、Peek 失效、重复回退、EOF 与非法 UTF-8 的处理边界。336 收藏 -
Go 的 atomic.Int64 可以用零值记录可正可负的并发偏移量。本文从 Add、Load、Store、Swap 和 CompareAndSwap 的调用方语义出发,说明如何做增减、重置、条件更新,以及首次使用后不可复制和只保护单个整数等边界。336 收藏 -
Go 1.27 为 go tool compile 增加 response file 支持。本文用一个具体编译场景说明如何用 @file 传递参数、处理引号与路径,并划清它和 go build 的边界。336 收藏 -
围绕 os.UserCacheDir 讲清 Unix、macOS、Windows 和 Plan 9 的用户缓存根目录规则,以及 XDG_CACHE_HOME 错误边界、应用子目录创建和缓存读写处理。336 收藏 -
本文用 Go debug/elf 读取 ELF 节区的 SectionHeader.Flags,通过 SHF_EXECINSTR 判断节区是否包含指令,并区分缺失节区、非 ELF 输入和其它标志组合。336 收藏 -
Go encoding/base32 的 NoPadding 会去掉 RFC 4648 的等号。本文按跨系统交接场景说明如何判断无填充长度、恢复等号、选择解码器,并把兼容逻辑放在协议边界。336 收藏 -
Go 1.27 的 go/ast.PreorderStack 在遍历语法树时同时提供当前节点和父节点栈,适合判断嵌套函数、块作用域与调用位置。本文用一个可运行示例说明调用链、栈内容和边界处理。335 收藏 -
用 Koanf 先加载文件配置,再用带前缀的环境变量覆盖指定键。本文说明 env/v2 的键名转换、加载顺序、类型覆盖、结构体解码和严格合并边界。335 收藏