一、结论
gin.SetMode(utils.AppMode)
在初始化本路由的时候使用,从源码可看出,通过给变量ginMode
赋值的方式提供了三种模式:
DebugMode
ReleaseMode
TestMode
// SetMode sets gin mode according to input string.
func SetMode(value string) {
...
switch value {
case DebugMode:
ginMode = debugCode
case ReleaseMode:
ginMode = releaseCode
case TestMode:
ginMode = testCode
default:
panic("gin mode unknown: " + value + " (available mode: debug release test)")
}
modeName = value
}
在 Github 上 Gin 的 issue 中有回复:
With "debug" mode, Gin prints some extra debug information.
Under development, use "debug" mode, which is the default mode.
In production, use "release" mode.You can just ignore "test" mode, which does not mean much.
总之,DebugMode
比ReleaseMode
多了一些额外的错误信息,生产环境不需要这些信息。而TestMode
是gin
用于自己的单元测试,用来快速开关DebugMode
。对其它开发者没什么意义。
参考
- Why we should set the gin.Mode? · Issue #2984 · gin-gonic/gin (github.com)
- go - What is the use of test mode in Gin - Stack Overflow
二、gin
源码探究(可以不看)
gin
通过一个简单的函数指出当前处于什么模式:
func IsDebugging() bool {
return ginMode == debugCode
}
通过跟踪这个IsDebugging()
,判断不同的 Mode 有什么差异:
可以看到主要集中在
debug.go
和gin.go
中