讲讲go的启动过程
Go语言的启动过程可以分为编译和运行两个阶段。以下是Go程序的启动过程的简要描述:
源代码编写: 开发者编写Go程序的源代码文件,通常以
.go
为文件扩展名。编译: 使用Go编译器将源代码编译成机器代码。这个阶段生成一个可执行文件。
go build <filename>.go
或者直接运行:
go run <filename>.go
链接: 在编译过程中,Go编译器将生成的机器代码与标准库和其他依赖项一起链接,形成最终的可执行文件。
运行: 用户通过终端或命令行运行生成的可执行文件。这个可执行文件包含了所有程序的逻辑和依赖项,它会被操作系统加载到内存中,并执行程序的
main
函数。main函数执行: Go程序的执行始于
main
函数。当可执行文件被加载到内存中后,操作系统会调用main
函数,从而启动整个程序的执行过程。初始化: 在
main
函数执行之前,Go运行时系统会执行一些初始化工作,例如设置GOROOT
、GOPATH
等环境变量,初始化全局变量等。这也包括对init
函数的调用,init
函数用于执行一些初始化任务。main函数执行: 一旦初始化完成,程序开始执行
main
函数中的代码。main
函数是程序的入口点。程序执行: 在
main
函数执行期间,程序会按照代码的逻辑执行,调用其他函数、处理数据、执行并发操作等。程序结束: 当
main
函数执行完毕,或者通过os.Exit()
主动退出程序,或者遇到运行时错误导致程序崩溃时,程序会结束执行。在结束前,可以执行一些善后工作,例如关闭文件、释放资源等。
总体而言,Go的启动过程相对简单,其中运行时系统在程序启动时负责一些初始化工作,然后执行main
函数,最终程序执行完毕。
参考资料
https://juejin.cn/post/6942509882281033764 (第一个流程图来源) https://juejin.cn/post/7035633561805783070 (第二个流程图来源, 同样值得阅读)