【Gin-v1.9.0源码阅读】mode.go

// Copyright 2014 Manu Martinez-Almeida. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.

package gin

import (
    "flag"
    "io"
    "os"

    "github.com/gin-gonic/gin/binding"
)

// EnvGinMode indicates environment name for gin mode.
// EnvGinMode表示gin模式的环境名称。
const EnvGinMode = "GIN_MODE"

const (
    // DebugMode indicates gin mode is debug.
    // DebugMode表示gin模式为调试模式。
    DebugMode = "debug"
    // ReleaseMode indicates gin mode is release.
    // ReleaseMode表示gin模式为发布模式。
    ReleaseMode = "release"
    // TestMode indicates gin mode is test.
    // TestMode表示gin模式为测试模式。
    TestMode = "test"
)

const (
    debugCode = iota
    releaseCode
    testCode
)

// DefaultWriter is the default io.Writer used by Gin for debug output and
// middleware output like Logger() or Recovery().
// DefaultWriter是Gin用于调试输出和中间件输出(如Logger()或Recovery())的默认io.Writer。
// Note that both Logger and Recovery provides custom ways to configure their
// output io.Writer.
// 请注意,Logger和Recovery都提供了自定义方式来配置其输出io.Writer。
// To support coloring in Windows use:
// 要支持Windows中的着色,请使用:
//
//    import "github.com/mattn/go-colorable"
//    gin.DefaultWriter = colorable.NewColorableStdout()
//
// os.Stdout 标准输出
var DefaultWriter io.Writer = os.Stdout

// DefaultErrorWriter is the default io.Writer used by Gin to debug errors
// DefaultErrorWriter是Gin用来调试错误的默认io.Writer
// os.Stderr 错误文件描述符
var DefaultErrorWriter io.Writer = os.Stderr

var (
    ginMode  = debugCode
    modeName = DebugMode
)

func init() {
    // 默认gin模式为debugCode
    mode := os.Getenv(EnvGinMode)
    SetMode(mode)
}

// SetMode sets gin mode according to input string.
// SetMode根据输入字符串设置gin模式。
// 设置gin的模式,例如gin.SetMode(gin.ReleaseMode)
func SetMode(value string) {
    if value == "" {
        if flag.Lookup("test.v") != nil {
            value = TestMode
        } else {
            value = DebugMode
        }
    }

    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
}

// DisableBindValidation closes the default validator.
// DisableBindValidation关闭默认验证程序。
func DisableBindValidation() {
    binding.Validator = nil
}

// EnableJsonDecoderUseNumber sets true for binding.EnableDecoderUseNumber to
// call the UseNumber method on the JSON Decoder instance.
// EnableJsonDecoderUseNumber为binding设置true。EnableDecoderUseNumber在JSON Decoder实例上调用UseNumber方法。操作关闭默认验证程序。
func EnableJsonDecoderUseNumber() {
    binding.EnableDecoderUseNumber = true
}

// EnableJsonDecoderDisallowUnknownFields sets true for binding.EnableDecoderDisallowUnknownFields to
// call the DisallowUnknownFields method on the JSON Decoder instance.
// EnableJsonDecoderDisableUnknownFields为binding设置true。EnableDecoderDisallowUnknownField调用JSON Decoder实例上的DisableUnknown Fields方法。
func EnableJsonDecoderDisallowUnknownFields() {
    binding.EnableDecoderDisallowUnknownFields = true
}

// Mode returns current gin mode.
// Mode(模式)返回当前gin模式。
func Mode() string {
    return modeName
}

猜你喜欢

转载自blog.csdn.net/qq2942713658/article/details/129774042