Go问答技术文章
-
Badger 事务提交返回 ErrConflict 时,必须创建全新事务重新读取并执行;本文给出有限次数重试、短退避、ErrTxnTooBig 分流与 CommitWith 持久化边界。234 收藏 -
bbolt.Open 默认会等待数据库文件锁,数据库已被其他进程占用时可能长期不返回。本文说明如何设置 Options.Timeout,识别 ErrTimeout,并处理 Close、重试和残留进程等边界。411 收藏 -
bbolt 的 View 回调里再次调用 Update 可能长期阻塞。本文解释单写事务与读事务的生命周期关系,给出读取结果复制到事务外、再独立写入的处理方式,以及回滚、告警和复盘清单。158 收藏 -
说明 bbolt Get 返回值的事务有效期,给出事务内复制的读取接口,并区分键缺失、空值及错误,明确缓存和异步任务的数据持有边界。224 收藏 -
以共享前缀声明为例,比较 Participle 有限前瞻与语法重写在 AST 兼容、字段归属和错误诊断上的取舍,区分真正歧义及左递归问题。426 收藏 -
Participle 的 Elide 会让注释令牌跳过普通语法匹配,因此它们不会自动成为 AST 字段。本文从实际选型出发,对比 Tokens 元数据、显式捕获和语义注释三种保留方式。198 收藏 -
Participle 内部使用带回溯的递归下降解析器,左递归会让同一产生式在消费输入前再次调用自己。本文用表达式 AST 说明原因,并给出 Primary 加 Tail 的改写方式。240 收藏 -
解释 Go Goldmark 中普通回车、显式硬换行和 WithHardWraps 的渲染差异,并给出中文文本选择 LineBreakStrategy 的判断方法。161 收藏 -
Goldmark 的 Markdown 实例可以长期复用,但 parser.Context 是单次解析的可变状态。本文从第二次转换异常的场景出发,说明状态残留的根因、修复写法与并发边界。252 收藏 -
Go Goldmark 默认不渲染 Markdown 中的原始 HTML,原因在 HTML renderer 的安全选项。本文说明 html.WithUnsafe 的职责、受信任模板的配置方式,以及不可信内容为什么不能直接开启。372 收藏 -
解释Go SJSON原地替换的字节长度条件、len与cap差异及返回切片所有权,给出独立输入示例和可复现分配基准,避免把成功替换误当成零分配。473 收藏 -
Go SJSON 追加数组元素时,路径末尾使用 -1,例如 items.-1。本文拆开说明它与具体下标、越过数组末尾和数字对象键的区别,并给出可直接改写 JSON 的示例。408 收藏 -
Go SJSON 的 Set 会把 Go 值按 JSON 规则编码,SetRaw 则直接写入原始 JSON 片段。本文用数字、字符串、数组和对象示例说明两者的类型边界,并给出动态 raw 输入的校验方案。107 收藏 -
GJSON 的 Float() 返回 float64,大于 2^53 的整数不能都被浮点数精确表示。本文对比 Result.Raw、String、Float、Int 和 Uint,说明订单号、用户 ID 等大整数应该怎样读取。243 收藏 -
Go GJSON 的数组条件查询中,#(...) 取第一个匹配项,#(...)# 才会收集全部匹配项。本文用同一份数据对比两种路径的返回形态、Go 代码读取方式、空结果边界和接口设计取舍。242 收藏