GO语言"go/doc"包中"NewFromFiles"函数的用法及代码示例。
用法:
func NewFromFiles(fset *token.FileSet, files []*ast.File, importPath string, opts ...any)(*Package, error)
NewFromFiles 计算包的文档。
包由 *ast.Files 列表和相应的文件集指定,不能为 nil。 NewFromFiles 在计算文档时使用所有提供的文件,因此调用者有责任仅提供与所需构建上下文匹配的文件。 "go/build".Context MatchFile 可用于确定文件是否将构建上下文与所需的 GOOS 和 GOARCH 值以及其他构建约束相匹配。包的导入路径由 importPath 指定。
_test.go 文件中的示例根据其名称与相应的类型、函数、方法或包相关联。如果示例名称中有后缀,则在 Example.Suffix 字段中设置。名称格式错误的示例将被跳过。
可选地,可以提供一个 Mode 类型的额外参数来控制文档提取行为的低级方面。
NewFromFiles 拥有 AST 文件的所有权并可以编辑它们,除非 PreserveAST 模式位打开。
例子:
此示例说明了如何使用NewFromFiles 来计算包文档和示例。
package main
import (
"fmt"
"go/ast"
"go/doc"
"go/parser"
"go/token"
)
func main() {
// src and test are two source files that make up
// a package whose documentation will be computed.
const src = `
// This is the package comment.
package p
import "fmt"
// This comment is associated with the Greet function.
func Greet(who string) {
fmt.Printf("Hello, %s!\n", who)
}
`
const test = `
package p_test
// This comment is associated with the ExampleGreet_world example.
func ExampleGreet_world() {
Greet("world")
}
`
// Create the AST by parsing src and test.
fset := token.NewFileSet()
files := []*ast.File{
mustParse(fset, "src.go", src),
mustParse(fset, "src_test.go", test),
}
// Compute package documentation with examples.
p, err := doc.NewFromFiles(fset, files, "example.com/p")
if err != nil {
panic(err)
}
fmt.Printf("package %s - %s", p.Name, p.Doc)
fmt.Printf("func %s - %s", p.Funcs[0].Name, p.Funcs[0].Doc)
fmt.Printf(" ⤷ example with suffix %q - %s", p.Funcs[0].Examples[0].Suffix, p.Funcs[0].Examples[0].Doc)
}
func mustParse(fset *token.FileSet, filename, src string) *ast.File {
f, err := parser.ParseFile(fset, filename, src, parser.ParseComments)
if err != nil {
panic(err)
}
return f
}
输出:
package p - This is the package comment. func Greet - This comment is associated with the Greet function. ⤷ example with suffix "world" - This comment is associated with the ExampleGreet_world example.
相关用法
- GO NewReader用法及代码示例
- GO NewCBCDecrypter用法及代码示例
- GO NewCFBDecrypter用法及代码示例
- GO NewCFBEncrypter用法及代码示例
- GO NewReplacer用法及代码示例
- GO New用法及代码示例
- GO NewGCM用法及代码示例
- GO NewTripleDESCipher用法及代码示例
- GO NewWriter用法及代码示例
- GO NewCBCEncrypter用法及代码示例
- GO NewOFB用法及代码示例
- GO NewTLSServer用法及代码示例
- GO NewTicker用法及代码示例
- GO NewCTR用法及代码示例
- GO NewEncoder用法及代码示例
- GO NumError用法及代码示例
- GO NotifyContext用法及代码示例
- GO Node用法及代码示例
- GO Notify用法及代码示例
- GO NotFoundHandler用法及代码示例
注:本文由纯净天空筛选整理自golang.google.cn大神的英文原创作品 NewFromFiles。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。