首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

go/doc(文档)

  • import "go/doc"
  • 概述
  • 索引

概述

Package doc 从 Go AST 中提取源代码文档。

索引

  • 变量
  • func Examples(files ...*ast.File) []*Example
  • func IsPredeclared(s string) bool
  • func Synopsis(s string) string
  • func ToHTML(w io.Writer, text string, words map[string]string)
  • func ToText(w io.Writer, text string, indent, preIndent string, width int)
  • type Example
  • type Filter
  • type Func
  • type Mode
  • type Note
  • type Package
  • func New(pkg *ast.Package, importPath string, mode Mode) *Package
  • func (p *Package) Filter(f Filter)
  • type Type
  • type Value

包文件

变量

代码语言:javascript
复制
var IllegalPrefixes = []string{
        "copyright",
        "all rights",
        "author",
}
代码语言:javascript
复制
func Examples(files ...*ast.File) []*Example

Examples 返回按名称字段排序的文件中找到的示例。Order 字段记录遇到示例的顺序。

可播放的示例必须位于名称以“_test”结尾的包中。在以下任一情况下,示例都是“playable”(播放字段不为零):

代码语言:javascript
复制
 - 示例函数是自包含的:函数仅引用
  来自其他包的标识符(或预先标识的标识符,例如
  “int”)并且测试文件不包含点导入。
- 整个测试文件就是一个例子:该文件只包含一个
  示例函数,零测试或基准函数,以及至少一个
  顶级函数,类型,变量或常量声明其他
  比示例函数。

func IsPredeclared(显示源代码)

代码语言:javascript
复制
func IsPredeclared(s string) bool

IsPredeclared 报告 s 是否是预先标识的标识符。

代码语言:javascript
复制
func Synopsis(s string) string

Synopsis 返回 s 中第一句话的清晰版本。该句在第一个句点后加空格,并且前面没有一个大写字母后结束。结果字符串没有 \n,\r 或 \t 字符,并且在单词之间只使用单个空格。如果 s 从任何非法前缀开始,则结果是空字符串。

代码语言:javascript
复制
func ToHTML(w io.Writer, text string, words map[string]string)

ToHTML 将注释文本转换为格式化的 HTML。该评论是由 DocReader 编写的,因此已知不会在行尾有空行,也不会在行尾有尾随空格。评论标记已被删除。

不缩进的非空行的每个跨度都被转换为单个段落。规则有一个例外:由单一行组成的跨度,后面跟着另一段跨度,以大写字母开头,并且不包含标点符号被格式化为标题。

缩进行的跨度被转换为 <pre> 块,并删除了公共缩进前缀。

评论文本中的 URL 被转换为链接;如果 URL 也出现在单词映射中,则链接将从映射中获取(如果相应的映射值是空字符串,则 URL 不会转换为链接)。

出现在单词映射中的 Go 标识符以斜体表示;如果相应的映射值不是空字符串,则将其视为 URL 并将该单词转换为链接。

代码语言:javascript
复制
func ToText(w io.Writer, text string, indent, preIndent string, width int)

ToText 以文本输出的形式准备评论文本。它将文本段落包装成宽度或更少的 Unicode 代码点,然后将每行缩进前缀。在预先格式化的部分(如程序文本)中,它使用 preIndent 前缀每个非空行。

一个Example 代表了一个在源文件中找到的示例函数。

代码语言:txt
复制
type Example struct {
        Name        string // 被例示的项目的名称
        Doc         string // 示例函数doc string
        Code        ast.Node
        Play        *ast.File // 该示例的整个程序版本
        Comments    []*ast.CommentGroup
        Output      string // 预期输出
        Unordered   bool
        EmptyOutput bool // 期待空输出
        Order       int  // 原始源代码顺序
}
代码语言:javascript
复制
type Filter func(string) bool

Func 是 func 声明的文档。

代码语言:txt
复制
type Func struct {
        Doc  string
        Name string
        Decl *ast.FuncDecl

        // 方法
        // (对于函数,这些字段具有相应的零值)
        Recv  string // 实际接收器 “T”或“* T”
        Orig  string // 原始接收器 “T”或“* T”
        Level int    // 嵌入水平; 0表示未嵌入
}

Mode 值控制 New 的操作。

代码语言:javascript
复制
type Mode int
代码语言:txt
复制
const (
        // 提取所有包级声明的文档,
        // 不只是出口的
        AllDecls Mode = 1 << iota

        // 显示所有嵌入式方法,而不仅仅是
        // 不可见(未导出)的匿名字段
        AllMethods
)

Note 代表以“MARKER(uid):note body”开头的标注注释。任何带有2个或更多大写 AZ 字母的标记以及至少一个字符的uid都被识别。uid后面的“:”是可选的。注释收集在由 Note 标记索引的 Package.Notes地图中。

代码语言:txt
复制
type Note struct {
        Pos, End token.Pos // 包含标记的注释的位置范围
        UID      string    // 用标记找到的uid
        Body     string    // 注意正文
}

Package 是整个包的文档。

代码语言:txt
复制
type Package struct {
        Doc        string
        Name       string
        ImportPath string
        Imports    []string
        Filenames  []string
        Notes      map[string][]*Note

        // 不推荐使用:为了向后兼容性,Bugs仍然填充,
        // 但是所有新代码都应该使用Notes。
        Bugs []string

        // 声明
        Consts []*Value
        Types  []*Type
        Vars   []*Value
        Funcs  []*Func
}
代码语言:javascript
复制
func New(pkg *ast.Package, importPath string, mode Mode) *Package

New 计算给定包 AST 的包文档。New 取得 AST pkg 的所有权,并可以编辑或覆盖。

func (*Package) Filter(显示源代码)

代码语言:javascript
复制
func (p *Package) Filter(f Filter)

过滤器消除了不通过过滤器f的名称的文档。TODO(gri):将“Type.Method”识别为名称。

Type 是类型声明的文档。

代码语言:txt
复制
type Type struct {
        Doc  string
        Name string
        Decl *ast.GenDecl

        // 相关声明
        Consts  []*Value // 排序的(大多数)此类型的常量列表
        Vars    []*Value // 排序的(大多数)此类型的变量列表
        Funcs   []*Func  // 返回此类型的函数的排序列表
        Methods []*Func  // 排序的此类型的方法列表(包括嵌入式方法)
}

Value 是(可能分组的)var 或 const 声明的文档。

代码语言:txt
复制
type Value struct {
        Doc   string
        Names []string // 声明顺序中的var或const名称
        Decl  *ast.GenDecl
        // 包含已过滤或未导出的字段
}

扫码关注腾讯云开发者

领取腾讯云代金券