gpt4 book ai didi

function - 识别给定包/文件中的功能

转载 作者:行者123 更新时间:2023-12-03 10:10:12 25 4
gpt4 key购买 nike

我正在尝试做的事情:
我正在尝试编写一个程序,该程序读取 .go 文件并将其存储为(比如说String)。之后,我想以某种方式识别该文件中的所有功能并将其分别存储,例如在一系列功能中。后者是我被困的地方。我尝试使用正则表达式来匹配功能,但是用这种方式匹配每个单独的功能似乎非常困难。
所以,基本上,我要提供的是一种在给定文件中获取每个函数并将其以某种方式存储在容器中的方法。
范例程式码

func check(e error) {
if e != nil {
panic(e)
}

func main() {
f, err := ioutil.ReadFile("../test.txt")
check(err)
s := string(f)
SearchFunctions(s) }
我希望能够识别并存储 以及函数在此文件中并将其存储。
非常感谢你

最佳答案

使用go/parser package将源解析为AST。使用go/ast package搜索功能。

src := `package example

func myfunction() {
log.Fatal("blah")
}
func aDifferentFunction() {
panic("blah")
}`

// Parse the file.
fset := token.NewFileSet()
f, err := parser.ParseFile(fset, "example.go", src, 0)
if err != nil {
log.Fatal(err)
}

var functions []*ast.FuncDecl

// Walk the AST looking for functions.
ast.Inspect(f, func(n ast.Node) bool {
if n, ok := n.(*ast.FuncDecl); ok {
functions = append(functions, n)
}
return true
})

for _, n := range functions {
fmt.Printf("\n---\nfound function %s at %s\n", n.Name.Name, fset.Position(n.Pos()))
printer.Fprint(os.Stdout, fset, n)
}
Run it on the playground

关于function - 识别给定包/文件中的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64959482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com