Go语言技术文章
-
Go json.Decoder 字段为空时,先看错误,再检查导出字段、JSON标签、大小写、嵌套层级、目标指针和输入流。区分缺失、null与空字符串,并说明严格模式的兼容取舍。166 收藏 -
MySQL 多值索引没有可直接设置的每行数组元素数参数。本文区分业务长度约束与 65221 字节引擎硬边界,演示 JSON_LENGTH、CHECK 和超限后的拆表判断。166 收藏 -
Go work 没有使用本地模块,通常不是本地代码没有更新,而是工作区没有被当前命令发现、use 没指向含 go.mod 的模块根目录、导入路径与 module path 不一致,或 GOWORK=off 关闭了工作区。本文按排查顺序给出修复方法。166 收藏 -
Go 切片截取后可能仍保留过大的 capacity。本文用 slices.Clip 收紧容量边界,并解释它与复制、三索引切片和后续 append 的区别。166 收藏 -
Go 的 http.Cookie.Valid 会在写出 Cookie 前检查名称、值、过期时间、路径、域名以及 Partitioned 与 Secure 的组合约束。本文用可执行示例说明如何读取具体错误、避免 String 的静默降级,并划清 Valid 与浏览器策略的边界。166 收藏 -
Redis Stream 的 XREAD COUNT 只限制本次返回消息数量,不是全局限流。本文说明它与读取游标、BLOCK、多 Stream 以及 XREADGROUP 的边界。166 收藏 -
Go 源码分析中,ast.Ident 只有语法名字,不能直接说明它代表变量、函数还是类型。本文用 go/types.Info.ObjectOf 统一查询标识符对象,并解释 Defs、Uses、nil、嵌入字段与 TypeOf 的边界。166 收藏 -
PHP 8.3 起可用 mb_str_pad 按 Unicode 字符数补齐中文等多字节字符串。本文说明右侧、左侧和两侧补齐的参数写法,以及多字符填充串、版本和显示宽度边界。166 收藏 -
Go sync.OnceFunc 把一次性初始化动作封装成可并发调用的闭包。本文从初始化入口、共享状态、重复调用和 panic 边界拆解它的使用方式,并说明何时应改用 OnceValue。166 收藏 -
从独立日志迁移到关联观测,说明traces、metrics、logs的分工,以及资源身份、Trace ID、Span ID和exemplar的关系,讨论高基数、采样与保留策略造成的关联边界。166 收藏 -
Redis CLIENT TRACKING 不会替应用保存本地缓存,而是记录客户端读过的 key,并在 key 被修改、过期或淘汰时发送失效通知。本文按 RESP3、RESP2、OPTIN/OPTOUT、BCAST 和断连竞态整理一套可落地的选择流程。166 收藏 -
Go debug/dwarf.Reader 按 DWARF 树的前序顺序返回条目,遇到 Children=true 的父条目后可以调用 SkipChildren 跳过整棵子树。本文用 ELF/DWARF 读取示例说明调用位置、Tag=0 边界、常见误区和不可信输入限制。166 收藏 -
解释 Go testing.Parallel、t.Run 与 Cleanup 的执行边界,帮助你安排测试夹具和资源释放,避免并行子测试提前清理共享资源。166 收藏 -
Go Humanize 用 IBytes 和 IBytesN 将字节数格式化为 KiB、MiB 等 IEC 单位。本文从单位边界、默认展示、总位数控制和大数值注意事项入手,给出适合文件列表与摘要展示的选择方法。166 收藏 -
Go Validator 的字段标签适合校验单个字段,密码与确认密码、起止时间等跨字段不变量需要结构体级校验。本文用 RegisterStructValidation 注册 StructLevelFunc,说明 ReportError、错误路径、初始化时机和安全边界。166 收藏