Go教程技术文章
-
Go atomic.Value 的关键不是可以存任意类型,而是同一个 Value 的 Store、Load、Swap 与 CompareAndSwap 必须围绕同一具体类型工作。本文用配置快照示例说明初始化、更新、nil、类型别名和复制规则。337 收藏 -
用 Go archive/tar.Reader.Next 顺序遍历 tar 归档,区分 EOF、文件类型与读取边界,并给出受控提取的实现要点。337 收藏 -
Go 1.25 的 runtime/trace.FlightRecorder 能持续保留最近一段执行轨迹,在慢请求或健康检查异常时导出现场。本文用一个 100 毫秒慢请求阈值示例,说明 MinAge、MaxBytes、WriteTo 和 go tool trace 的配合边界。336 收藏 -
Golang · Go教程 | 1个月前 | 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 收藏 -
Go 1.24 完整支持带类型参数的别名声明。本文用一个从 legacy 包迁移到 collection 包的 Set API,比较 type 定义与 type 别名的差异,说明方法、导出类型、go.mod 版本和工具链兼容边界。335 收藏 -
Go 1.27 的 go/ast.PreorderStack 在遍历语法树时同时提供当前节点和父节点栈,适合判断嵌套函数、块作用域与调用位置。本文用一个可运行示例说明调用链、栈内容和边界处理。335 收藏 -
Go 1.26 将此前实验性的 Green Tea 垃圾回收器设为默认。升级后不能只看单次压测数字,本文从适用场景、指标基线、最小验证和临时回退开关整理一套可落地的检查方法。334 收藏 -
调用 context.WithCancel 后,goroutine 仍然不退出,通常不是 cancel 失效,而是工作循环没有监听 Done 或被阻塞在不可取消的操作上。本文用最小代码复现问题,再通过 pprof、日志和退出计数定位原因,给出可回归的修复方式。334 收藏 -
用一个最小 HTTP 服务演示 Go 的 http.NewResponseController 如何统一调用 Flush 和 Hijack,并核对包装器与 HTTP/2 不支持时的错误边界。334 收藏 -
用 Go atomic.Pointer[Config] 发布不可变配置快照,说明 Store、Load、切片复制、map 隔离和多字段一致性的工程边界。334 收藏 -
Golang · Go教程 | 3星期前 | Go教程 · 输入校验 · Go math/big.Int.SetString Go 大整数进制解析 SetString 返回值判断 Go 输入校验 big.Int 字符串转换
讲清 Go math/big.Int.SetString 的成功与失败返回值、base=0 前缀规则、固定进制的常见误判,并给出安全处理非法输入的完整示例。334 收藏