以下常用方法列表,文档更新可能滞后于代码新特性,更多的方法及示例请参考代码文档:https://pkg.go.dev/github.com/gogf/gf/v2/os/gcfg

GetWithEnv

  • 说明
    • GetWithEnv方法会先从默认的配置文件中获取配置数据,获取为空的时候,将会去当前的环境变量中进行获取。需要注意的是名称命名转换规则:
    • 环境变量会将名称转换为大写,名称中的.字符转换_字符。
    • 参数名称中会将名称转换为小写,名称中的_字符转换.字符。
  • 格式:

    GetWithEnv(ctx context.Context, pattern string, def ...interface{}) (*gvar.Var, error)


  • 示例:

    func ExampleConfig_GetWithEnv() {
    	var (
    		key = `env.test`
    		ctx = gctx.New()
    	)
    	v, err := g.Cfg().GetWithEnv(ctx, key)
    	if err != nil {
    		panic(err)
    	}
    	fmt.Printf("env:%s\n", v)
    	if err = genv.Set(`ENV_TEST`, "gf"); err != nil {
    		panic(err)
    	}
    	v, err = g.Cfg().GetWithEnv(ctx, key)
    	if err != nil {
    		panic(err)
    	}
    	fmt.Printf("env:%s", v)
    
    	// Output:
    	// env:
    	// env:gf
    }


GetWithCmd

  • 说明:GetWithCmd方法与GetWithEnv方法类似,也是先从默认的配置对象中获取配置数据,但是获取为空的时候,是去命令行中获取配置信息。
  • 格式:

    GetWithCmd(ctx context.Context, pattern string, def ...interface{}) (*gvar.Var, error)


  • 示例:

    func ExampleConfig_GetWithCmd() {
    	var (
    		key = `cmd.test`
    		ctx = gctx.New()
    	)
    	v, err := g.Cfg().GetWithCmd(ctx, key)
    	if err != nil {
    		panic(err)
    	}
    	fmt.Printf("cmd:%s\n", v)
    	// Re-Initialize custom command arguments.
    	os.Args = append(os.Args, fmt.Sprintf(`--%s=yes`, key))
    	gcmd.Init(os.Args...)
    	// Retrieve the configuration and command option again.
    	v, err = g.Cfg().GetWithCmd(ctx, key)
    	if err != nil {
    		panic(err)
    	}
    	fmt.Printf("cmd:%s", v)
    
    	// Output:
    	// cmd:
    	// cmd:yes
    }


MustGetWithCmd

  • 说明:MustGetWithCmd方法与GetWithCmd方法类似,该方法只会返回配置内容,一旦内部发生任何错误,将会有panic。
  • 格式:

    MustGetWithCmd(ctx context.Context, pattern string, def ...interface{}) *gvar.Var


  • 示例:

    func ExampleConfig_MustGetWithCmd() {
    	var (
    		key = `cmd.test`
    		ctx = gctx.New()
    	)
    	v := g.Cfg().MustGetWithCmd(ctx, key)
    
    	fmt.Printf("cmd:%s\n", v)
    	// Re-Initialize custom command arguments.
    	os.Args = append(os.Args, fmt.Sprintf(`--%s=yes`, key))
    	gcmd.Init(os.Args...)
    	// Retrieve the configuration and command option again.
    	v = g.Cfg().MustGetWithCmd(ctx, key)
    	
    	fmt.Printf("cmd:%s", v)
    
    	// Output:
    	// cmd:
    	// cmd:yes
    }


MustGetWithEnv

  • 说明:MustGetWithEnv方法与GetWithEnv方法类似,该方法只会返回配置内容,一旦内部发生任何错误,将会有panic。
  • 格式:

    MustGetWithEnv(ctx context.Context, pattern string, def ...interface{}) *gvar.Var


  • 示例:

    func ExampleConfig_MustGetWithEnv() {
    	var (
    		key = `env.test`
    		ctx = gctx.New()
    	)
    	v := g.Cfg().MustGetWithEnv(ctx, key)
    
    	fmt.Printf("env:%s\n", v)
    	if err := genv.Set(`ENV_TEST`, "gf"); err != nil {
    		panic(err)
    	}
    	v = g.Cfg().MustGetWithEnv(ctx, key)
    	
    	fmt.Printf("env:%s", v)
    
    	// Output:
    	// env:
    	// env:gf
    }


Data

  • 说明:Data方法从配置对象中获取配置数据,组装成map[string]interface{}类型。
  • 格式:

    Data(ctx context.Context) (data map[string]interface{}, err error)


  • 示例:

    func ExampleConfig_Data() {
    	ctx := gctx.New()
    	content := `
    v1    = 1
    v2    = "true"
    v3    = "off"
    v4    = "1.23"
    array = [1,2,3]
    [redis]
        disk  = "127.0.0.1:6379,0"
        cache = "127.0.0.1:6379,1"
    `
    	c, err := gcfg.New()
    	if err != nil{
    		panic(err)
    	}
    	c.GetAdapter().(*gcfg.AdapterFile).SetContent(content)
    	data, err := c.Data(ctx)
    	if err != nil{
    		panic(err)
    	}
    
    	fmt.Println(data)
    
    	// Output:
    	// map[array:[1 2 3] redis:map[cache:127.0.0.1:6379,1 disk:127.0.0.1:6379,0] v1:1 v2:true v3:off v4:1.23]
    }



MustData

  • 说明:MustData方法从配置对象中获取配置数据,组装成map[string]interface{}类型。当该方法内部产生错误时不会返回错误,而是直接panic。
  • 格式:

    MustData(ctx context.Context) map[string]interface{}


  • 示例:

    func ExampleConfig_MustData() {
    	ctx := gctx.New()
    	content := `
    v1    = 1
    v2    = "true"
    v3    = "off"
    v4    = "1.23"
    array = [1,2,3]
    [redis]
        disk  = "127.0.0.1:6379,0"
        cache = "127.0.0.1:6379,1"
    `
    	c, err := gcfg.New()
    	if err != nil{
    		panic(err)
    	}
    
    	c.GetAdapter().(*gcfg.AdapterFile).SetContent(content)
    	data := c.MustData(ctx)
    
    	fmt.Println(data)
    
    	// Output:
    	// map[array:[1 2 3] redis:map[cache:127.0.0.1:6379,1 disk:127.0.0.1:6379,0] v1:1 v2:true v3:off v4:1.23]
    }


Get

  • 说明:Get方法从配置对象中获取配置数据,返回gvar泛型对象。
  • 格式:

    Get(ctx context.Context, pattern string, def ...interface{}) (*gvar.Var, error)


  • 示例:

    func ExampleConfig_Get() {
    	ctx := gctx.New()
    	content := `
    v1    = 1
    v2    = "true"
    v3    = "off"
    v4    = "1.23"
    array = [1,2,3]
    [redis]
        disk  = "127.0.0.1:6379,0"
        cache = "127.0.0.1:6379,1"
    `
    	c, err := gcfg.New()
    	if err != nil{
    		panic(err)
    	}
    
    	c.GetAdapter().(*gcfg.AdapterFile).SetContent(content)
    	data,err := c.Get(ctx,"redis")
    
    	if err != nil {
    		panic(err)
    	}
    	fmt.Println(data)
    
    	// Output:
    	// {"cache":"127.0.0.1:6379,1","disk":"127.0.0.1:6379,0"}
    }



MustGet

  • 说明:MustGet方法与Get类似,也是配置对象中获取配置数据,组装成gvar结构,但是返回参数只有一个:*gvar.Var
  • 注意:当配置文件不存在或者是其他error的情况下,会直接panic,需要做好异常捕获措施。
  • 格式:

    MustGet(ctx context.Context, pattern string, def ...interface{}) *gvar.Var


  • 示例:

    func ExampleConfig_MustGet() {
    	ctx := gctx.New()
    	content := `
    v1    = 1
    v2    = "true"
    v3    = "off"
    v4    = "1.23"
    array = [1,2,3]
    [redis]
        disk  = "127.0.0.1:6379,0"
        cache = "127.0.0.1:6379,1"
    `
    	c, err := gcfg.New()
    	if err != nil{
    		panic(err)
    	}
    
    	c.GetAdapter().(*gcfg.AdapterFile).SetContent(content)
    	data := c.MustGet(ctx,"redis")
    
    	fmt.Println(data)
    
    	// Output:
    	// {"cache":"127.0.0.1:6379,1","disk":"127.0.0.1:6379,0"}
    }


GetAdapter

  • 说明:GetAdapter方法是获取当前运行的gcfg适配器信息,关于适配器相关,可以请点击配置管理-接口化设计
  • 格式:

    GetAdapter() Adapter


  • 示例:

    func ExampleConfig_GetAdapter() {
    	c, err := gcfg.New()
    	if err != nil{
    		panic(err)
    	}
    
    	adapter := c.GetAdapter()
    	fmt.Println(adapter)
    
    	// Output:
    	// &{config.toml 0xc00014d720 0xc000371880 false}
    }


SetAdapter

  • 说明:SetAdapter方法是设置当前运行的gcfg适配器信息,关于适配器相关,可以请点击配置管理-接口化设计
  • 格式:

     SetAdapter(adapter Adapter)


  • 示例:

    func ExampleConfig_SetAdapter() {
    	c, err := gcfg.New()
    	if err != nil{
    		panic(err)
    	}
    
    	adapter := c.GetAdapter()
    	c.SetAdapter(adapter)
    	fmt.Println(adapter)
    
    	// Output:
    	// &{config.toml 0xc00014d720 0xc000371880 false}
    }