go build 是golang 编译都会用到的命令,在控制台下 ,进入到项目根目录,直接运行go build,一般情况下都会有信息输出。
然后,某年某月某日,写了N就 的代码,测试也没问题,改编译了。于是顺手在控制台下,直接一个 go build命令,之后就等待完成。片刻之后,控制台显示执行完成,然后查看生成文件,顿时傻眼了:啥都没有,不应该啊! 在执行一遍go build 不报错啊!可还是没有,于是检查一遍项目目录路径和控制台路径,结果一致,没问题,但是就是不生成!
清理,重新编译!无果
再清理,再编译!还是无果
。。。。。。
无奈搜索一番,没什么有用价值
焦急万分之际,随意打开代码文件查看!main.go 是有main函数!没错!package ….
不对!问题出来了!
项目是在goland自动生成的,main.go 的package 不是main,而是项目名!
修改成main后,go build 熟悉的文件生成了!问题解决了!粗心大意导致的不是问题的问题!
那么,为什么没有main包就不会编译生成文件呢?
在 Go 语言里,命名为 main 的包具有特殊的含义。 Go 语言的编译程序会试图把这种名字的包编译为二进制可执行文件。所有用 Go 语言编译的可执行程序都必须有一个名叫 main 的包。一个可执行程序有且仅有一个 main 包。
当编译器发现某个包的名字为 main 时,它一定也会发现名为 main()的函数,否则不会创建可执行文件。 main()函数是程序的入口,所以,如果没有这个函数,程序就没有办法开始执行。程序编译时,会使用声明 main 包的代码所在的目录的目录名作为二进制可执行文件的文件名。