Go教程技术文章
-
io.MultiWriter 按顺序把同一份数据写入多个目标;中间目标失败时不会回滚或继续写。本文说明如何判断部分写入、记录失败目标并设计幂等补偿。337 收藏 -
Go atomic.Value 的关键不是可以存任意类型,而是同一个 Value 的 Store、Load、Swap 与 CompareAndSwap 必须围绕同一具体类型工作。本文用配置快照示例说明初始化、更新、nil、类型别名和复制规则。337 收藏 -
本地多模块联调时,版本不生效不一定是 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.27 的 go/ast.PreorderStack 在遍历语法树时同时提供当前节点和父节点栈,适合判断嵌套函数、块作用域与调用位置。本文用一个可运行示例说明调用链、栈内容和边界处理。335 收藏 -
用 Go atomic.Pointer[Config] 发布不可变配置快照,说明 Store、Load、切片复制、map 隔离和多字段一致性的工程边界。334 收藏 -
Golang · Go教程 | 1星期前 | Go教程 · 输入校验 · Go math/big.Int.SetString Go 大整数进制解析 SetString 返回值判断 Go 输入校验 big.Int 字符串转换
讲清 Go math/big.Int.SetString 的成功与失败返回值、base=0 前缀规则、固定进制的常见误判,并给出安全处理非法输入的完整示例。334 收藏 -
用 Go io.LimitReader 限制上传时,不能只看 EOF;把读取上限设为 maxBytes+1,再根据实际读取字节数判断是否超限。333 收藏 -
用 reflect.StructOf 动态生成带 Tag 的结构体时,重点检查字段是否导出、Tag 是否按约定格式读取,以及嵌入字段不支持提升方法这三个边界。333 收藏 -
用 Go 的 len、unicode/utf8.RuneCountInString 和项目级宽度规则区分字节数、Unicode 码点数与屏幕显示宽度,避免中英文、emoji 和非法 UTF-8 造成长度判断偏差。333 收藏 -
Go 的 bufio.Scanner 默认token缓冲并不适合所有日志行。本文说明如何在首次Scan前用Buffer设置最大字节数,识别ErrTooLong,并在超出业务上限时切换bufio.Reader。333 收藏 -
Go 1.27 将 simd 与架构相关的 archsimd 作为实验性标准库能力带入发布版,但它不是所有业务代码的通用加速开关。本文从数据布局、目标架构和实验性 API 三个边界判断适用场景,并给出接入前的检查清单。332 收藏 -
Go 1.22 的 net/http.ServeMux 支持把 HTTP 方法和通配符直接写进路由模式。本文用小例子说明 PathValue、最具体匹配、冲突 panic 和 405 的判断方法。332 收藏