-
Go buildutil.ExpandPatterns 根据构建上下文展开包路径模式。本文给出集合转有序清单的写法,说明包含与排除的顺序、工作区范围,以及它与模块加载和构建验证的区别。
-
Go 的 norm.Properties(...).BoundaryBefore() 用来判断当前 rune 是否开启新的规范化片段。本文从单点判断讲到 NextBoundaryInString,说明如何在 UTF-8 分块输入中找到不会切断组合标记的安全位置。
-
Go x/text/width 的 Widen 会把存在宽体变体的字符映射为宽字符,适合全角化处理。本文给出字符串与流式 Reader 两种写法,并说明未映射字符、Unicode 宽度类别和数据存储边界。
-
本文围绕 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 的关系,并给出分支、返回和不返回调用的处理方式。