refactor: using atomic.Int32

This commit is contained in:
cuiweixie 2025-08-14 13:58:12 +08:00
parent 077a2f39c8
commit 6f3c71e261
3 changed files with 10 additions and 12 deletions

View File

@ -10,7 +10,6 @@ import (
"runtime" "runtime"
"strconv" "strconv"
"strings" "strings"
"sync/atomic"
) )
const ginSupportMinGoVer = 23 const ginSupportMinGoVer = 23
@ -18,7 +17,7 @@ const ginSupportMinGoVer = 23
// IsDebugging returns true if the framework is running in debug mode. // IsDebugging returns true if the framework is running in debug mode.
// Use SetMode(gin.ReleaseMode) to disable debug mode. // Use SetMode(gin.ReleaseMode) to disable debug mode.
func IsDebugging() bool { func IsDebugging() bool {
return atomic.LoadInt32(&ginMode) == debugCode return ginMode.Load() == debugCode
} }
// DebugPrintRouteFunc indicates debug log output format. // DebugPrintRouteFunc indicates debug log output format.

View File

@ -45,7 +45,7 @@ var DefaultWriter io.Writer = os.Stdout
var DefaultErrorWriter io.Writer = os.Stderr var DefaultErrorWriter io.Writer = os.Stderr
var ( var (
ginMode int32 = debugCode ginMode atomic.Int32
modeName atomic.Value modeName atomic.Value
) )
@ -66,11 +66,11 @@ func SetMode(value string) {
switch value { switch value {
case DebugMode: case DebugMode:
atomic.StoreInt32(&ginMode, debugCode) ginMode.Store(debugCode)
case ReleaseMode: case ReleaseMode:
atomic.StoreInt32(&ginMode, releaseCode) ginMode.Store(releaseCode)
case TestMode: case TestMode:
atomic.StoreInt32(&ginMode, testCode) ginMode.Store(testCode)
default: default:
panic("gin mode unknown: " + value + " (available mode: debug release test)") panic("gin mode unknown: " + value + " (available mode: debug release test)")
} }

View File

@ -6,7 +6,6 @@ package gin
import ( import (
"os" "os"
"sync/atomic"
"testing" "testing"
"github.com/gin-gonic/gin/binding" "github.com/gin-gonic/gin/binding"
@ -18,24 +17,24 @@ func init() {
} }
func TestSetMode(t *testing.T) { func TestSetMode(t *testing.T) {
assert.Equal(t, int32(testCode), atomic.LoadInt32(&ginMode)) assert.Equal(t, int32(testCode), ginMode.Load())
assert.Equal(t, TestMode, Mode()) assert.Equal(t, TestMode, Mode())
os.Unsetenv(EnvGinMode) os.Unsetenv(EnvGinMode)
SetMode("") SetMode("")
assert.Equal(t, int32(testCode), atomic.LoadInt32(&ginMode)) assert.Equal(t, int32(testCode), ginMode.Load())
assert.Equal(t, TestMode, Mode()) assert.Equal(t, TestMode, Mode())
SetMode(DebugMode) SetMode(DebugMode)
assert.Equal(t, int32(debugCode), atomic.LoadInt32(&ginMode)) assert.Equal(t, int32(debugCode), ginMode.Load())
assert.Equal(t, DebugMode, Mode()) assert.Equal(t, DebugMode, Mode())
SetMode(ReleaseMode) SetMode(ReleaseMode)
assert.Equal(t, int32(releaseCode), atomic.LoadInt32(&ginMode)) assert.Equal(t, int32(releaseCode), ginMode.Load())
assert.Equal(t, ReleaseMode, Mode()) assert.Equal(t, ReleaseMode, Mode())
SetMode(TestMode) SetMode(TestMode)
assert.Equal(t, int32(testCode), atomic.LoadInt32(&ginMode)) assert.Equal(t, int32(testCode), ginMode.Load())
assert.Equal(t, TestMode, Mode()) assert.Equal(t, TestMode, Mode())
assert.Panics(t, func() { SetMode("unknown") }) assert.Panics(t, func() { SetMode("unknown") })