程序怎么判断一个go源文件中是否有main函数?

程序怎么判断一个go源文件中是否有main函数?考虑可能是注释

已邀请:

stevewang

赞同来自: voidint astaxie Xargin imjj

import (
    "go/parser"
    "go/token"
    "go/ast"
)

func HasMain(file string) (bool, error) {
    fset := token.NewFileSet()
    f, err := parser.ParseFile(fset, file, nil, 0)
    if err != nil {
        return false, err
    }
    for _, dec := range f.Decls {
        fd, ok := dec.(*ast.FuncDecl)
        if ok && fd.Name.Name == "main" {
            return true, nil
        }
    }
    return false, nil
}

kevin - 杭州云柚科技

赞同来自:

直接正则搜索?

要回复问题请先登录注册