我正在尝试使用Go的解析器和ast包读取有关结构类型的Doc注释。在此示例中,代码仅将自身用作源。
package main
import (
"fmt"
"go/ast"
"go/parser"
"go/token"
)
// FirstType docs
type FirstType struct {
// FirstMember docs
FirstMember string
}
// SecondType docs
type SecondType struct {
// SecondMember docs
SecondMember string
}
// Main docs
func main() {
fset := token.NewFileSet() // positions are relative to fset
d, err := parser.ParseDir(fset, "./", nil, parser.ParseComments)
if err != nil {
fmt.Println(err)
return
}
for _, f := range d {
ast.Inspect(f, func(n ast.Node) bool {
switch x := n.(type) {
case *ast.FuncDecl:
fmt.Printf("%s:\tFuncDecl %s\t%s\n", fset.Position(n.Pos()), x.Name, x.Doc)
case *ast.TypeSpec:
fmt.Printf("%s:\tTypeSpec %s\t%s\n", fset.Position(n.Pos()), x.Name, x.Doc)
case *ast.Field:
fmt.Printf("%s:\tField %s\t%s\n", fset.Position(n.Pos()), x.Names, x.Doc)
}
return true
})
}
}
可以毫无问题地输出func和字段的注释文档,但是由于某种原因,找不到“ FirstType docs”和“ SecondType
docs”。我想念什么?Go版本是1.1.2。
(要运行上面的代码,请将其保存到main.go文件中,然后单击go run main.go
)
您需要使用该go/doc
软件包从ast中提取文档:
package main
import (
"fmt"
"go/doc"
"go/parser"
"go/token"
)
// FirstType docs
type FirstType struct {
// FirstMember docs
FirstMember string
}
// SecondType docs
type SecondType struct {
// SecondMember docs
SecondMember string
}
// Main docs
func main() {
fset := token.NewFileSet() // positions are relative to fset
d, err := parser.ParseDir(fset, "./", nil, parser.ParseComments)
if err != nil {
fmt.Println(err)
return
}
for k, f := range d {
fmt.Println("package", k)
p := doc.New(f, "./", 0)
for _, t := range p.Types {
fmt.Println(" type", t.Name)
fmt.Println(" docs:", t.Doc)
}
}
}
我之前通过调用成功地用Tika解析了所有类型的文件,而没有设置任何自定义配置或元数据。现在我需要根据MIME-Type过滤文件进行解析。 我可以用找到mime-type,但是在调用之后,tika使用EmptyParser,检测到的内容类型是“application/octet-stream”。这是默认值,意味着tika无法找到它是什么类型的文件。我试图在解析文件之前设置元数据中的内容类型,但这导致
本文向大家介绍C#枚举类型与结构类型实例解析,包括了C#枚举类型与结构类型实例解析的使用技巧和注意事项,需要的朋友参考一下 本文以C#实例讲解了枚举类型与结构类型的用法,程序主要是通过个人电话本演示枚举类型与结构类型的用法,具体代码如下所示:
要支持多种文档类型,可以在CWinApp派生类对象中创建和注册附加的CMultiDocTemplate对象。在MFC应用程序中,要增加附加的文档类型,步骤可分为五步。下面我们试着将上一章的文本编辑器加到绘图程序中。这样程序不仅支持绘图,还支持文本编辑功能。 (1)使用ClassWizard创建新的文档类和视图类: 由于已经有了前面的文本编辑器程序,只需要将其中的文件拷贝过来就可以了,然后用
我不确定这是我对框架的无知还是一个实际问题,请原谅我,因为我已经能够找到关于Axon 4的事件重放的很少的文档。 场景: 这摘自重播事件文档 版本信息:Spring Boot Starter:2.1.2、Axon Starter:4.0.3
让我们创建一个Potion文件作为插件的测试样本。 :::text factorial = (n): total = 1 n to 1 (i): total *= i. total. 10 times (i): i string print '! is: ' print factorial (i) string print
所以我对PyCharm有问题,找不到解决方法。它无法识别未解析的引用: 该图像还显示它无法自动完成 request.session。它只发生在 .session 上,它适用于所有其他属性。 此外,这张图片显示它确实检测到了其他内容的未解析引用: 我正在虚拟环境上运行它,解释器配置正确,并且启用了 Django 支持。 哦,我正在使用Python3和Django 1.10.2 编辑:刚刚在其他项目中