go源文件中是否有main函数

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

}

时间: 2024-08-29 00:05:30

go源文件中是否有main函数的相关文章

C/C++中如何在main()函数之前执行一条语句?

在C语言中,如果使用GCC的话,可以通过attribute关键字声明constructor和destructor(C语言中如何在main函数开始前执行函数) #include <stdio.h> __attribute((constructor)) void before_main() { printf("%s/n",__FUNCTION__); } __attribute((destructor)) void after_main() { printf("%s/

多玩YY语音的面试题:C++中如何在main()函数之前执行操作?

第一反应main()函数是所有函数执行的开始.但是问题是main()函数执行之前如何执行呢? 联想到MFC里面的 C**App类的theApp对象,其执行顺序就在main函数之前.道理相通,顺理推下,能够想到:如果在main函数之前声明一个类的全局的对象.那么其执行顺序,根据全局对象的生存期和作用域,肯定先于main函数. 示例如下: class simpleClass { public: simpleClass( ) { cout << "simpleClass construct

eCos系统无法正确链接到在C++源文件中自定义的cyg_user_start函数的问题和解决办法

在C++源文件中定义cyg_user_start函数前,将其声明成C函数,即可解决问题. eCos官网:http://ecos.sourceware.org eCos中文技术网:http://www.52ecos.net eCos交流QQ群:144940146. http://blog.csdn.net/zoomdy/article/details/39396085 mingdu.zheng<at>gmail<dot>com 问题: 在C++源文件中定义cyg_user_start

oc-03-OC访问OC源文件、C源文件中的函数

show.h #ifndef __OCDay01__Show__ #define __OCDay01__Show__ #include <stdio.h> extern void testTshow(); #endif /* defined(__OCDay01__Show__) */ show.c #include "Show.h" void testTshow(){ printf("我就是大名鼎鼎的 C文件中的 函数 ,何人敢调用? 哈哈哈哈 \n")

对于Java中main函数为虚函数以及多态的一点理解

Question: 1.在Java中,由于main函数的定义为: public static void main(String[] args):那么要想在main函数中调用其余的函数的话,就必须将定义为static.另外,调用其他类编写的成员函数时,却不需要该成员函数为静态的,这是为什么? 分析: 静态方法是属于某一个类所有,而非静态方法是属于某类的对象所有.也就是说,要想调用非静态方法,必须先调用new来得到一个类的对象,系统为其分配内存,然后才能通过该对象访问相应的非静态成员函数.而静态方法

[汇编与C语言关系]2. main函数与启动例程

为什么汇编程序的入口是_start,而C程序的入口是main函数呢?以下就来解释这个问题 在<x86汇编程序基础(AT&T语法)>一文中我们汇编和链接的步骤是: $ as hello.s -o hello.o $ ld hello.o -o hello 我们用gcc main.c -o main开编译一个c程序,其实际分为三个步骤:编译.汇编.链接 $ gcc -S main.c 生成汇编代码 $ gcc -c main.s 生成目标文件 $ gcc main.o 生成可执行文件 我们

第七章之main函数和启动例程

main函数和启动例程 为什么汇编程序的入口是_start,而C程序的入口是main函数呢?本节就来解释这个问题.在讲例 18.1 "最简单的汇编程序"时,我们的汇编和链接步骤是: $ as hello.s -o hello.o$ ld hello.o -o hello以前我们常用gcc main.c -o main命令编译一个程序,其实也可以分三步做,第一步生成汇编代码,第二步生成目标文件,第三步生成可执行文件: $ gcc -S main.c$ gcc -c main.s$ gcc

C++ main()函数及其参数

1.首先,想想C/C++在main函数之前和之后会做些什么? 我们看看底层的汇编代码: __start: : init stack; init heap; open stdin; open stdout; open stderr; : push argv; push argc; call _main; (调用 main) : destory heap; close stdin; close stdout; close stderr; : call __exit; 我们可以看到main函数也只是其

为什么c程序里一定要写main函数

一. 学习过程 编写程序f.c: 对其进行编译,正常通过,再对其进行连接,出现错误: 显示的出错信息为: 翻译成中文是:在c0s模块没有定义符号’_main’. 那么这个错误信息可能与文件c0s.obj有关.那么是什么原因导致编译出错呢? 既然已经将程序编译成了obj文件,那么用之前我们经常使用的link.exe能否将它连接呢?结果是可以的: 用debug查看f.exe: 程序是从06fb:0到06fb:001c,一共29个字节.但是整个程序的代码有541字节: 执行最后一条ret指令,返回到b