Golang一些编译学习探讨

盈朔 · · 447 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

问题一:能介绍一下golang的包的概念么?

答:golang程序是通过编译package来生成对应的可执行程序的,编译的入口就是main::main()。包分为两类,一类纪实可执行的包,就是你创建项目之后main.go。另一种是工具包。工具包自身是不可执行的,但是它会给可执行的包增加一些功能,从而起到扩展主应用的作用。当一个包被引用的时候,GO会使用包的声明把这个包创建为全局变量。在go中,一个包就是一个目录。

问题二:介绍一下goroot路径的作用呗?

答:goroot为go的安装路径,当安装完成了之后,他的作用就是goroot的src路径下为标准库的源码。他的第二个作用就是当执行go run. Go build go install命令的时候,需要去查找工具包的时候,会先在goroot目录下面查找.

问题三:介绍一下gopath路径的作用呗?

答:golang的工作路径,可以有多个项目工作路径,直接用;分开就好。当我们执行go build或者go install命令的时候,会先从goroot目录下查找。当没有查找到,那么就会再次从gopath目录下进行查找。当都没有查找到的时候,就会抛异常。

问题四:一个关于go build的问题?

介绍:如果你想编译你的go程序,需要到对应的项目文件夹内,执行对应的go build。如果我没有main.go文件,但是我有一个新的文件名。里面仍然是package main.  Func main(){}.那么执行也是应该没有问题。或者我可以直接在这个项目内go build +有package main的文件名。也是能编译过的。就是go build他是怎么找入口的尼。如果没给参数。

问题五:go build和go install之间什么区别?

答:go build如果是有main:main的文件项目会生成一个二进制文件在当前目录下面。如果不是命令源文件就只是预编译一下,帮你去找找错误。go install会帮你安装到对应gopath下面的bin文件内。其他的操作和go build都差不多。

问题六:介绍一下go test命令呗?

答:通俗点说当你想对一些库文件想要进行测试一下的时候定义一个***_test.go的文件。里面定义好对应的调用测试函数。然后执行对应的go test加对应的函数名称就可以进行对应的测试。这个命令主要的作用就是方便你去测试一下你的代码是否可以。不用重新自己去写一个测试程序了。

问题七:介绍一个go run命令呗?

答:该命令可以直接的运行go命令源文件。并得到对应的结果。但是如果命令源文件中因为其他包,他仍然是需要从goroot和gopath目录下面去寻找的。但是只有一个命令源文件就不会有问题。

我个人感觉这个命令就是方便你想写一个测试的go例子。一个文件就可以搞定了。那么就不需要从头去搭建对应的工程开始了。

问题八:能说一下go源码到应用程序的过程么?

答:对于这个问题,我也只是知道一个大概,就是go 源代码文件会先合成一个中间文件。然后通过链接合成应用程序。这个链接应该就是go标准库或go提供的一下东西吧。和c/c++很像。c/c++需要经过预编译,汇编,链接。应用程序。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:盈朔

查看原文:Golang一些编译学习探讨

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

447 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传