golang中的热加载

热加载

一般称为hot loading,指在应用程序运行时动态加载或替换代码、配置或资源,而无需停止或重新启动应用程序。
通过热加载,可以在运行时更新应用程序的部分内容,而不会中断服务或造成停机时间。
对于开发人员来说,hot loading更多的体现在更改了文件内容之后,不需要编译实时的就能看到改变后的结果。
这种特性一般来说都是解释性语言的专利,golang作为编译型语言无法做到真正的热加载。
但是由于golang编译速度足够快,所以有一些工具通过监听文件变化,重新编译运行来实现伪热加载功能。

工具air

推荐一个自用的工具air
github官方仓库地址
工具本身没什么可说的,用起来也是极为简单

推荐使用golang的module管理工具全局安装

1
2
3
4
5
6
7
8
9
10
#安装air
go install github.com/cosmtrek/air@latest
#检查是否可用
air -v
#切换到项目文件夹
cd /path/to/your_project
#初始化配置文件
air init
#启动air
air

效果

air的效果图

图中右下角第一个ok1就是修改之前的
只要保存文件,就触发了air的自动编译,再次请求就是ok2了,非常的方便

goland多次保存的问题

有的时候goland会因为格式化或者其他原因保存多次,如果不做任何特殊配置会导致air重新编译n次(n=保存的次数)
因为几次保存几乎都是同时进行的, 所以只需要在配置文件里设置delay = 100即可有效解决问题