-
本文围绕 golang.org/x/tools/go/analysis 的 Pass.Reportf,说明怎样从 AST 节点或原始文件行号取得 token.Pos,并提交带源码位置的静态分析诊断。
-
Go transform 的 Span 可识别无需改写的字节前缀。本文用 width.Fold 说明前缀保留、ErrEndOfSpan、缓冲区处理和状态延续,并解释完整输入与流式输入的区别。
-
Go 的 golang.org/x/text/secure/precis 提供 Nickname profile,适合对国际化昵称做空格映射、NFKC 归一化和等价比较。本文区分 String、Compare、CompareKey 的用途,并给出查重与错误处理写法。
-
Go x/text/secure/bidirule 的 Direction 和 DirectionString 用于读取标签的整体文本方向,结果可能是 LeftToRight、RightToLeft、Mixed 或 Neutral。本文用统一的 Go 示例说明如何解读返回值,并区分方向判断、Bidi Rule 合法性检查和 Transformer 的状态边界。
-
Go runes.If 可按字符集合为连续片段选择不同转换器。本文用派生检索标签说明两套规则的组合写法,并解释 nil 分支、Reset、UTF-8 输入和串联转换的区别。
-
Go x/text/search 的 IndexString 返回首次匹配的字节半开区间,未命中时返回 -1,-1。本文用 UTF-8 混合文本说明 Matcher、Backwards、Anchor 与 Pattern 复用,避免把字节下标误当成字符序号。
-
本文用 golang.org/x/text/number 的 Scientific 说明科学计数法显示方式,并介绍 Precision、Scale、语言标签与 Engineering 的边界。
-
讲清 Go x/text/message MatchLanguage 的参数顺序、语言回退和 Printer 使用边界,用同一个 language.Tag 统一翻译文本与地区数字格式。
-
Go x/text/language 的 Compose 适合把 Base、Region 和已有 Tag 组合成语言标签。本文用实际代码说明参数类型、重复部件覆盖、Variant 与 Extension 累积、错误处理和规范化选择。
-
ssa.NewProgram 用 FileSet 和 BuilderMode 创建空的 SSA 程序容器。本文说明初始化写法、包注册与函数体构建的区别,并比较手动入口和 ssautil 辅助函数的适用条件。
-
Go callgraph.DeleteSyntheticNodes 可以从调用图中移除不对应源语法的合成函数节点,并重建剩余节点之间的可达关系。本文说明它的调用时机、root 与包初始化函数的保留边界,以及不可达节点为何需要另行处理。
-
Go cfg.New 可以把一个函数体转换成简单控制流图。本文从 AST 函数体出发,说明 mayReturn 回调、CFG.Blocks、Block.Nodes、Succs 与 Kind 的关系,并给出分支、返回和不返回调用的处理方式。
-
Go typeutil.Map 适合把 go/types 产出的 types.Type 作为键,并按类型等价关系保存任意值。本文从类型检查结果取出类型对象,演示 Set、At、Iterate 的用法,说明普通 map、字符串键、并发读写和 Hasher 的边界。
-
Go x/image/font/sfnt 的 GlyphIndex 用于把 rune 映射到字体中的字形索引。本文从缺字症状出发,说明字体解析、Buffer 复用、返回 0 的含义,以及如何继续读取字形名称、边界和轮廓。
-
Go packages.Load 可加载显式 Go 文件集合,也可用 file= 查询所属包。本文说明两者的范围差异,给出文件列表封装,并解释 Mode、路径处理和两层错误。