Go语言技术文章
-
Participle 内部使用带回溯的递归下降解析器,左递归会让同一产生式在消费输入前再次调用自己。本文用表达式 AST 说明原因,并给出 Primary 加 Tail 的改写方式。240 收藏 -
通过配置赋值案例说明 Participle 状态词法器如何区分引号内外规则、保留文本与转义片段,并用结构体语法约束闭引号及处理字符串值。351 收藏 -
Participle 的错误对象已经携带 lexer.Position,可以用 errors.As 提取 ParseError,输出文件名、行号、列号和 Message,并正确区分普通错误。293 收藏 -
用一个小型键值配置格式说明 Go Participle 的结构体标签、递归字段、重复项和错误边界,帮助调用方把有限语法稳定映射成 Go 结构体。334 收藏 -
解释 Go Goldmark 中普通回车、显式硬换行和 WithHardWraps 的渲染差异,并给出中文文本选择 LineBreakStrategy 的判断方法。161 收藏 -
Goldmark 的 Markdown 实例可以长期复用,但 parser.Context 是单次解析的可变状态。本文从第二次转换异常的场景出发,说明状态残留的根因、修复写法与并发边界。252 收藏 -
围绕Go Goldmark自定义Badge节点说明Kind定义、HTML回调注册、进入与离开事件及文本转义,用固定v1接口示例区分节点构造和渲染职责。246 收藏 -
Go Goldmark 默认不渲染 Markdown 中的原始 HTML,原因在 HTML renderer 的安全选项。本文说明 html.WithUnsafe 的职责、受信任模板的配置方式,以及不可信内容为什么不能直接开启。372 收藏 -
用 Go Goldmark 的 ast.Walk 遍历 Markdown AST,提取 Heading 层级和纯文本,生成可用于目录、侧栏和锚点的结构。174 收藏 -
解释Go SJSON原地替换的字节长度条件、len与cap差异及返回切片所有权,给出独立输入示例和可复现分配基准,避免把成功替换误当成零分配。473 收藏 -
Go Goldmark 默认按 CommonMark 解析 Markdown,表格语法需要显式接入 extension.Table。本文用一个最小 Go 示例说明 v1 的配置方式、Table 与 GFM 的选择、对齐输出和 v2 API 的迁移边界。119 收藏 -
Go SJSON 追加数组元素时,路径末尾使用 -1,例如 items.-1。本文拆开说明它与具体下标、越过数组末尾和数字对象键的区别,并给出可直接改写 JSON 的示例。408 收藏 -
Go SJSON 的 Set 会把 Go 值按 JSON 规则编码,SetRaw 则直接写入原始 JSON 片段。本文用数字、字符串、数组和对象示例说明两者的类型边界,并给出动态 raw 输入的校验方案。107 收藏 -
已有 JSON 对象需要嵌入另一个 JSON 时,SJSON 应使用 SetRaw 或 SetRawBytes,而不是把对象当普通字符串传给 Set。本文从类型边界、原始片段校验和审计记录三个方面给出可落地写法。435 收藏 -
SJSON 的 SetRaw 需要一个非空路径,空路径会返回 path cannot be empty,因此它不适合直接替换完整根 JSON。本文区分根文档替换、根对象字段写入和嵌套字段更新,并给出 SetRawBytes 的选择方式。405 收藏