00:00
好,同学们,我们再来看一下go执行流程的一个分析。执行流程的分析。好,我们把它放到笔里面来。好,这个还是快速开发入门的一部分啊。就是看看这个勾纳执行流程的分析,我们看第一种就是示意图吧。如果当。啊。如果是先编译对源码,源码编译后再执行。在执行,那么他的执行流程应该是这样子的,够的执行流程执行。流程。流程如下图。对吧,诶如果说你是把这个源代码编译过后再执行,那么他的执行流程就应该是这样子的,哪个呢,就是我这画的这个图。把这个图拿过来。
01:00
OK,把它放在这,我们来做一个解释吧。大家看那么源代码。拿到过后呢,你用了一个go build的指令。个标的一个指令,它会把我们的源代码进行一个编译,编译呢会形成一个exe的可执行文件,如果我我说的如果是Windows啊,如果你是呃Linux或是Mac呢,它后面就没有这个exe这个后缀了,但是呢,仍然是一个可执行文件理解,然后拿到这个可执行文件,你就可以对这个可执行文件进行运行。怎么运行的呀,比如说像我们的Windows,你就应该是这样子的,Hello点直接对它执行就可以了。啊,这个就叫运行我们的可执行文件啊,这个就叫运行我们可执行文件。好,那么如果说同学们是用go wrong这个指令直接来运行一个源代码,它的流程又是什么样子呢?看这啊,如果。
02:00
如果我们是对源码,源码源代码啊,源代码直接。直接执行这个go wrong指令go。Run源代码。那么它的流程呢?那么go的执行流程就如下图。那下图呢,大家看一下就这个图。诶看到这个图了没有,就这个就直接他把编译和运行呢就放在一起了。啊,编译和运行,那明显你会感到这两者啊,谁的速度更快一点呢?就说如果只是从运行的角度来看,那肯定他直接执行,可执行文件肯定要快,因为这个已经是二进制的了。如果你直接让的话呢,其实它仍然在底层,会把我们的源码。变异层二进制再执行,只是他把这个过程怎么样隐藏起来了,因此你们可以感觉到前者执行的速度要快,后者执行速度要慢,对不对?
03:05
好,我把这个呢写到这里来。好,这里呢,我做一个小结啊,就是同学们注意一下。就是我们在实际的开发中呢,还是应该先把它编译成可执行的文件再执行,对吧?这种方式呢,就是你有时候为了快速的看一下你的源代码有没有什么变化,你可以这样去试一下,但实际开发中咱们不会这么去用,明白好,那么现在呢,我们再来看看这两者它的区别是什么,简单的聊两句来看一下啊,说明两种执行流程的方式区别,这也是个面试。的时候,面试官有可能会问到的一个问题,大家注意听一下。那么我总结了有这么三点啊,同学们注意听第一句。如果我们先编译成可执行文件,那么我们可以将该可执行文件拷贝到没有够开发环境的机器上,仍然可以运行。
04:04
什么个意思,大家看。同学们注意观察到没有?你们如果有有注意到的话,你们会发现。我们编译生成的这个文件会变得比较大。再看。Go的源代码注意看啊,同学们注意观察勾的源代码其实只有1KB。可是当我们编译过后,你会发现它变成了1.8兆,为什么会变这么大呢,同学们?这就是因为他在编译的时候,其实他也会把这个源代码需要执行的相关的一些文件和资源打包进去,能理解吗?所以它就会变得很大。它就会变得很大,那也就是说,如果同学们把这个文件啊,同学们复制一下。如果你把这个文件。拷贝到其他的地方。不要拷到拷贝到别的机器上,假设这个机器没有开,没有安装go的SDK,它也是可以运行的,你看我双击。
05:02
啊,你看双击,当然这双击没办法啊,你要还是要进入到这个控制台去,比如说SD。啊,兄弟。那那么因为你这这个这个地方啊,这样子啊,为了好找一点,我把它切到D盘吧,我直接把它切到D盘。你看啊,我是直接把它切到D盘来了啊,我进入到D盘。CDD盘。D。CDD。CDD盘。好可以了,第二那同学看到这里面呢,就有刚才老师直接切过来这个hello.ex文件,这个时候我直接执行。回车,你看他仍然可以执行。对吧,他仍然可以执行这个hello word。Hello word,那如果说同学们把这个,把这个文件hello,点一个C,直接拷贝到你的另外一台机上面去,假设那台机器没有装GOSDK,它也可以运行,明白吧,就是因为它变得很大,因为它把相关资源已经一起加载到里面去了,或者连接到里面去了,理解这个意思吧。
06:20
好,这是第一个需要同学们注意的。第二个如果我们直接。Go让源代码,那么需要在另外机器上也要有这个go开发环境才可以,比如说你把源代码给你了,打个比方说韩老师把hello.go这个源代码交给了一个张三,张三呢,他想去用这个,呃,Go wrong来运行,那需要对方也应该有这个。SDK才可以,否则它是跑不起来的,明白吧,好,这一点大家注意一下,第三点,在编译时,编译器会将程序所依赖的库文件,还有包含的可知性,呃,依赖的库文件包含在。
07:01
可执行文件中,所以可执行文件就会变大了很多,大家刚才也看到了,原先源代码是1KB,等到编译过后呢,变成1.8兆,变大的不是一点,一点半点变大了很多。那整个就相当于变大了多大多大,您可以看一下1KB和1895相当于变大了1000倍。啊,那为什么会变大呢?因为它所依赖的一些库也会被连接和编译进去,明白吧?好,那么关于这两个区别呢?啊,我们也把它整理到笔记里面去。大家注意一下这个区别。好,我把它放在这里啊。好,把它放在这里。好简单的把这个代码呢给大家整理一下。第一点是什么,对吧。第二个区别是什么,整理一下。好,同学们做到心目心中有数啊,心中有数好,那关于这个购乱的执行流程的两种两种方式的这个分析呢,先给大家介绍到这里,大家知道两者到底有什么区别。
我来说两句