-
解析命令参数:首先解析命令行参数,检查并设置运行参数。例如,检查是否传递了需要运行的Go文件的路径、是否设置了参数等。
-
设置环境变量:设置环境变量(比如$GOPATH、$GOROOT等),并添加到系统环境变量中以便运行时可用。
-
构建程序:将Go源码编译为机器代码。 Go源文件中的代码会被编译成以".o"为扩展名的目标文件,然后这些目标文件会被链接在一起,生成可执行文件。
-
运行程序:Go程序实现了不同操作系统的"main"函数,将程序运行起来。当你执行"Go run yourfile.go"时,实际上是先调用了Go编译器将"yourfile.go"文件编译成二进制文件,然后再运行这个二进制文件。
-
编译优化:在Go运行时,代码会进行优化,包括代码消除、控制流简化、变量提升等。这些优化操作帮助提高程序执行效率,减少资源使用。
-
执行GC:Go程序中的垃圾回收器(GC)会自动收集程序中不再使用的内存。 在Go运行时,垃圾回收可能会消耗大量时间。为了最大程度地减少程序的暂停时间,Go使用了一种叫"并发标记-清除(concurrent mark and sweep)"的方式,在程序运行时并发执行垃圾回收操作。
-
结束程序:程序运行结束后,Go运行时会释放所有内存并关闭所有相关的文件,然后结束程序执行。
Go run 的执行过程详解
4 min read